Exemplo n.º 1
0
/*==========================================
 * 時計イベント実行
 *------------------------------------------
 */
static
void npc_event_do_clock(TimerData *, tick_t)
{
    struct tm t = TimeT::now();

    ScriptLabel buf;
    if (t.tm_min != ev_tm_b.tm_min)
    {
        SNPRINTF(buf, 24, "OnMinute%02d"_fmt, t.tm_min);
        npc_event_doall(buf);
        SNPRINTF(buf, 24, "OnClock%02d%02d"_fmt, t.tm_hour, t.tm_min);
        npc_event_doall(buf);
    }
    if (t.tm_hour != ev_tm_b.tm_hour)
    {
        SNPRINTF(buf, 24, "OnHour%02d"_fmt, t.tm_hour);
        npc_event_doall(buf);
    }
    if (t.tm_mday != ev_tm_b.tm_mday)
    {
        SNPRINTF(buf, 24, "OnDay%02d%02d"_fmt, t.tm_mon + 1, t.tm_mday);
        npc_event_doall(buf);
    }
    ev_tm_b = t;
}
Exemplo n.º 2
0
// ギルドデータ一括受信(初期化時)
int guild_castlealldataload(int len,struct guild_castle *gc)
{
	int i;
	int n = (len-4) / sizeof(struct guild_castle), ev = -1;

	nullpo_retr(0, gc);

	//Last owned castle in the list invokes ::OnAgitinit
	for(i = 0; i < n; i++) {
		if ((gc + i)->guild_id)
			ev = i;
	}

	// 城データ格納とギルド情報要求
	for(i = 0; i < n; i++, gc++) {
		struct guild_castle *c = guild_castle_search(gc->castle_id);
		if (!c) {
			ShowError("guild_castlealldataload Castle id=%d not found.\n", gc->castle_id);
			continue;
		}
		memcpy(&c->guild_id,&gc->guild_id,
			sizeof(struct guild_castle) - ((int)&c->guild_id - (int)c) );
		if( c->guild_id ){
			if(i!=ev)
				guild_request_info(c->guild_id);
			else
				guild_npc_request_info(c->guild_id, "::OnAgitInit");
		}
	}
	if (ev == -1) //No castles owned, invoke OnAgitInit as it is.
		npc_event_doall("OnAgitInit");
	return 0;
}
Exemplo n.º 3
0
int guild_agit2_end(void)
{	// Run All NPC_Event[OnAgitEnd2]
	int c = npc_event_doall("OnAgitEnd2");
	ShowStatus("NPC_Event:[OnAgitEnd2] Run (%d) Events by @AgitEnd2.\n",c);
	// Stop auto saving
	delete_timer (guild_save_timer2, guild_save_sub);
	return 0;
}
Exemplo n.º 4
0
int guild_agit2_start(void)
{	// Run All NPC_Event[OnAgitStart2]
	int c = npc_event_doall("OnAgitStart2");
	ShowStatus("NPC_Event:[OnAgitStart2] Run (%d) Events by @AgitStart2.\n",c);
	// Start auto saving
	guild_save_timer2 = add_timer_interval (gettick() + GUILD_SAVE_INTERVAL, guild_save_sub, 0, 0, GUILD_SAVE_INTERVAL);
	return 0;
}
Exemplo n.º 5
0
/*==========================================
 *
 *------------------------------------------
 */
static
int chrif_connectack(Session *s, const Packet_Fixed<0x2af9>& fixed)
{
    if (fixed.code)
    {
        PRINTF("Connected to char-server failed %d.\n"_fmt, fixed.code);
        exit(1);
    }
    PRINTF("Connected to char-server (connection #%d).\n"_fmt, s);
    chrif_state = 1;

    chrif_sendmap(s);

    PRINTF("chrif: OnCharIfInit event done. (%d events)\n"_fmt,
            npc_event_doall(stringish<ScriptLabel>("OnCharIfInit"_s)));
    PRINTF("chrif: OnInterIfInit event done. (%d events)\n"_fmt,
            npc_event_doall(stringish<ScriptLabel>("OnInterIfInit"_s)));

    return 0;
}
Exemplo n.º 6
0
// ギルドデータ一括受信(初期化時)
int guild_castlealldataload(int len,struct guild_castle *gc)
{
	int i;
	int n = (len-4) / sizeof(struct guild_castle);
	int ev;

	nullpo_ret(gc);

	//Last owned castle in the list invokes ::OnAgitinit
	for( i = n-1; i >= 0 && !(gc[i].guild_id); --i );
	ev = i; // offset of castle or -1

	if( ev < 0 ) { //No castles owned, invoke OnAgitInit as it is.
		npc_event_doall("OnAgitInit");
		npc_event_doall("OnAgitInit2");
	}
	else // load received castles into memory, one by one
	for( i = 0; i < n; i++, gc++ )
	{
		struct guild_castle *c = guild_castle_search(gc->castle_id);
		if (!c) {
			ShowError("guild_castlealldataload Castle id=%d not found.\n", gc->castle_id);
			continue;
		}

		// update mapserver castle data with new info
		memcpy(&c->guild_id, &gc->guild_id, sizeof(struct guild_castle) - ((uintptr_t)&c->guild_id - (uintptr_t)c));

		if( c->guild_id )
		{
			if( i != ev )
				guild_request_info(c->guild_id);
			else { // last owned one
				guild_npc_request_info(c->guild_id, "::OnAgitInit");
				guild_npc_request_info(c->guild_id, "::OnAgitInit2");
			}
		}
	}

	return 0;
}
Exemplo n.º 7
0
/*==========================================
 * OnInitイベント実行(&時計イベント開始)
 *------------------------------------------
 */
int npc_event_do_oninit(void)
{
    int c = npc_event_doall(stringish<ScriptLabel>("OnInit"_s));
    PRINTF("npc: OnInit Event done. (%d npc)\n"_fmt, c);

    Timer(gettick() + 100_ms,
            npc_event_do_clock,
            1_s
    ).detach();

    return 0;
}
Exemplo n.º 8
0
int guild_agit3_end(void)
{	// Run All NPC_Event[OnAgitEnd23]
	int c = npc_event_doall("OnAgitEnd3");
	ShowStatus("NPC_Event:[OnAgitEnd3] Run (%d) Events by @AgitEnd3.\n",c);
	return 0;
}
Exemplo n.º 9
0
int guild_agit3_start(void)
{	// Run All NPC_Event[OnAgitStart23]
	int c = npc_event_doall("OnAgitStart3");
	ShowStatus("NPC_Event:[OnAgitStart3] Run (%d) Events by @AgitStart3.\n",c);
	return 0;
}
Exemplo n.º 10
0
/*==========================================
 *
 *------------------------------------------*/
int chrif_connectack(int fd)
{
	static bool char_init_done = false;

	if (RFIFOB(fd,2)) {
		ShowFatalError("Connection to char-server failed %d.\n", RFIFOB(fd,2));
		exit(EXIT_FAILURE);
	}

	ShowStatus("Successfully logged on to Char Server (Connection: '"CL_WHITE"%d"CL_RESET"').\n",fd);
	chrif_state = 1;
	chrif_connected = 1;

	chrif_sendmap(fd);

	ShowStatus("Event '"CL_WHITE"OnCharIfInit"CL_RESET"' executed with '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnCharIfInit"));
	ShowStatus("Event '"CL_WHITE"OnInterIfInit"CL_RESET"' executed with '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnInterIfInit"));
	if( !char_init_done ) {
		char_init_done = true;
		ShowStatus("Event '"CL_WHITE"OnInterIfInitOnce"CL_RESET"' executed with '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnInterIfInitOnce"));
	}

	return 0;
}
Exemplo n.º 11
0
/*==========================================
 *
 *------------------------------------------*/
int chrif_connectack(int fd)
{
	static bool char_init_done = false;

	if (RFIFOB(fd,2)) {
		ShowFatalError("Falha na conexao com o servidor de personagens %d.\n", RFIFOB(fd,2));
		exit(EXIT_FAILURE);
	}

	ShowStatus("Conexao com o Servidor de Personagens efetuada com sucesso (Conexao: '"CL_WHITE"%d"CL_RESET"').\n",fd);
	chrif_state = 1;
	chrif_connected = 1;

	chrif_sendmap(fd);

	ShowStatus("Evento '"CL_WHITE"OnInterIfInit"CL_RESET"' executado com '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnInterIfInit"));
	if( !char_init_done ) {
		char_init_done = true;
		ShowStatus("Evento '"CL_WHITE"OnInterIfInitOnce"CL_RESET"' executado com '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnInterIfInitOnce"));
	}

	return 0;
}
Exemplo n.º 12
0
/*==========================================
 *
 *------------------------------------------*/
int chrif_connectack(int fd)
{
	static bool char_init_done = false;

	if (RFIFOB(fd,2)) {
		ShowFatalError("Conexуo ao char-server falhou %d.\n", RFIFOB(fd,2));
		exit(EXIT_FAILURE);
	}

	ShowStatus("Ъxito na conexуo ao char-server (Conexуo: '"CL_WHITE"%d"CL_RESET"').\n",fd);
	chrif_state = 1;
	chrif_connected = 1;

	chrif_sendmap(fd);

	ShowStatus("Evento '"CL_WHITE"OnInterIfInit"CL_RESET"' executado com '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnInterIfInit"));
	if( !char_init_done ) {
		char_init_done = true;
		ShowStatus("Evento '"CL_WHITE"OnInterIfInitOnce"CL_RESET"' executado com '"CL_WHITE"%d"CL_RESET"' NPCs.\n", npc_event_doall("OnInterIfInitOnce"));
		guild_castle_map_init();
	}

	return 0;
}