Пример #1
0
void send_map(void)
{
	buffer_t buffer;
	uint32 x = 0;

	clear_buffer(&buffer);

	add_opcode(&buffer, CMAPDATA);
	add_string(&buffer, map()->name );
	add_buffer(&buffer, &map()->moral,SIZE8);
	add_buffer(&buffer, &map()->music,SIZE8);
	add_buffer(&buffer, &map()->left,SIZE16);
	add_buffer(&buffer, &map()->right,SIZE16);
	add_buffer(&buffer, &map()->up,SIZE16);
	add_buffer(&buffer, &map()->down,SIZE16);
	add_buffer(&buffer, &map()->shop,SIZE16);
	add_buffer(&buffer, &map()->bootmap,SIZE32);
	add_buffer(&buffer, &map()->bootx,SIZE8);
	add_buffer(&buffer, &map()->booty,SIZE8);

	for( x = 0; x < MAX_MAP_NPCS; x++){
		add_buffer(&buffer, &map()->npc[x].num,SIZE16);
	}

	add_buffer(&buffer, map()->tile,(MAX_MAPX * MAX_MAPY) * sizeof(tile_t));

	send_data(&buffer);
}
Пример #2
0
/**
* cast_spell(void)
*
* @brief
* @param void
* @return void
*/
void cast_spell(void)
{
	buffer_t buffer;

	//Check for subscript out of range
	if(!tempdata()->spell_selected || tempdata()->spell_selected >= MAX_PLAYER_SPELLS)
		return;

	//Check if player has enough MP
	if(player(myindex())->spells[tempdata()->spell_selected]){
		if(player(myindex())->vitals[VITAL_MP] < spell(player(myindex())->spells[tempdata()->spell_selected])->mpreq){
			//	Call AddText("Not enough MP to cast " & Trim$(Spell(SpellSelected).Name) & ".", 12)
			return;
		}
		if(gettickcount() > player(myindex())->attacktimer + 1){
			if(player(myindex())->moving == 0){
				clear_buffer(&buffer);
				add_opcode(&buffer,CCAST);
				add_buffer(&buffer,&tempdata()->spell_selected, SIZE16);
				socketsend(&buffer);
				player(myindex())->attacking = TRUE;
				player(myindex())->attacktimer = gettickcount();
				tempdata()->castedspell = TRUE;
			}
			else{
				//Call AddText("Cannot cast while walking!", 12)
			}
		}
	}
	else{
		//Call AddText("No spell here.", 12)
	}
}
Пример #3
0
void send_request_edit_spell(void)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CREQUESTEDITSPELL);

	send_data(&buffer);
}
Пример #4
0
void send_whos_online(void)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CWHOSONLINE);

	send_data(&buffer);
}
Пример #5
0
void send_request_edit_map(void)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CREQUESTEDITMAP);

	send_data(&buffer);
}
Пример #6
0
void send_map_respawn(void)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CMAPRESPAWN);

	send_data(&buffer);
}
Пример #7
0
void send_request_edit_item(void)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CREQUESTEDITITEM);

	send_data(&buffer);
}
Пример #8
0
void send_kick(char *name)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CKICKPLAYER);
	add_string(&buffer,name);

	send_data(&buffer);
}
Пример #9
0
void send_set_sprite(char *name, uint32 spritenum)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CSETSPRITE);
	add_buffer(&buffer,&spritenum, SIZE32);

	send_data(&buffer);
}
Пример #10
0
void warp_to(uint32 mapnum)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CWARPTO);
	add_buffer(&buffer,&mapnum, SIZE32);

	send_data(&buffer);
}
Пример #11
0
void warp_me_to(char *name)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CWARPMETO);
	add_string(&buffer,name);

	send_data(&buffer);
}
Пример #12
0
void request_new_map(void)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CREQUESTNEWMAP);
	add_buffer(&buffer,&player(myindex())->dir, SIZE8);

	send_data(&buffer);
}
Пример #13
0
void send_player_dir(void)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CPLAYERDIR);
	add_buffer(&buffer,&player(myindex())->dir, SIZE8);

	send_data(&buffer);
}
Пример #14
0
void send_ban(char *name)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CBANPLAYER);
	add_string(&buffer,name);

	send_data(&buffer);
}
Пример #15
0
void send_use_item(uint16 invnum)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CUSEITEM);
	add_buffer(&buffer, &invnum, SIZE8);

	send_data(&buffer);
}
Пример #16
0
void warp_to_me(char *name)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CWARPTOME);
	add_string(&buffer,name);

	send_data(&buffer);
}
Пример #17
0
void send_drop_item(uint16 invnum,uint32 amount)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CMAPDROPITEM);
	add_buffer(&buffer, &invnum, SIZE8);
	add_buffer(&buffer, &amount, SIZE32);

	send_data(&buffer);
}
Пример #18
0
void send_player_move(void)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CPLAYERMOVE);
	add_buffer(&buffer,&player(myindex())->dir, SIZE8);
	add_buffer(&buffer,&player(myindex())->moving, SIZE8);

	send_data(&buffer);
}
Пример #19
0
void send_set_access(char *name, uint8 group)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CSETGROUP);
	add_string(&buffer,name);
	add_buffer(&buffer,&group, SIZE8);

	send_data(&buffer);
}
Пример #20
0
void send_logout(void)
{
    buffer_t buffer;

    tempdata()->ingame = FALSE;

    clear_buffer(&buffer);
    add_opcode(&buffer,CQUIT);

    send_data(&buffer);
}
Пример #21
0
/**
* player_search(uint16 curx, uint16 cury)
*
* @brief
* @param curx
* @param cury
* @return void
*/
void player_search(uint16 curx, uint16 cury)
{
	buffer_t buffer;

	if(is_in_bounds()){
		clear_buffer(&buffer);
		add_opcode(&buffer, CSEARCH);
		add_buffer(&buffer, &tempdata()->curx, SIZE8);
		add_buffer(&buffer, &tempdata()->cury, SIZE8);
		socketsend(&buffer);
	}
}
Пример #22
0
void admin_msg(char *text)
{
	buffer_t buffer;
	uint32 len = strlen(text);

	clear_buffer(&buffer);
	add_opcode(&buffer,CADMINMSG);
	add_buffer(&buffer,&len, SIZE32);
	add_string(&buffer, text);

	send_data(&buffer);
}
Пример #23
0
void emote_msg(char *text)
{
	buffer_t buffer;
	uint32 len = strlen(text);

	clear_buffer(&buffer);
	add_opcode(&buffer,CEMOTEMSG);
	add_buffer(&buffer,&len, SIZE32);
	add_string(&buffer, text);

	send_data(&buffer);
}
Пример #24
0
void broadcast_msg(char *text)
{
	buffer_t buffer;
	uint32 len = strlen(text);

	clear_buffer(&buffer);
	add_opcode(&buffer,CBROADCASTMSG);
	add_buffer(&buffer,&len, SIZE32);
	add_string(&buffer, text);

	send_data(&buffer);
}
Пример #25
0
void global_msg(char *text)
{
	buffer_t buffer;
	uint32 len = strlen(text);

	clear_buffer(&buffer);
	add_opcode(&buffer,CGLOBALMSG);
	add_buffer(&buffer,&len, SIZE32);
	add_string(&buffer, text);

	send_data(&buffer);
}
Пример #26
0
void say_msg(char *text)
{
    buffer_t buffer;
    uint32 len = str_size(text);

    clear_buffer(&buffer);
    add_opcode(&buffer,CSAYMSG);
    add_buffer(&buffer,&len, SIZE32);
    add_string(&buffer, text);

    send_data(&buffer);
}
Пример #27
0
void player_msg(char *text, char *name)
{
	buffer_t buffer;
	uint32 len = strlen(text);

	clear_buffer(&buffer);
	add_opcode(&buffer,CPLAYERMSG);
	add_string(&buffer, name);
	add_buffer(&buffer,&len, SIZE32);
	add_string(&buffer, text);

	send_data(&buffer);
}
Пример #28
0
void send_new_account(char *name, char *charname, char *password, uint8 job, uint8 sex)
{
	buffer_t buffer;

	clear_buffer(&buffer);
	add_opcode(&buffer,CNEWACCOUNT);
	add_encypt_string(&buffer, name);
	add_encypt_string(&buffer, charname);
	add_encypt_string(&buffer, password);
	add_buffer(&buffer, &job, SIZE8);
	add_buffer(&buffer, &sex, SIZE8);

	send_data(&buffer);
}
Пример #29
0
void send_login(char *name, char *password)
{
	buffer_t buffer;
	int major = VERSION_MAJOR, minor = VERSION_MINOR, rev = VERSION_REV;
	clear_buffer(&buffer);
	add_opcode(&buffer,CLOGIN);
	add_encypt_string(&buffer, name);
	add_encypt_string(&buffer, password);
	add_buffer(&buffer, &major, SIZE8);
	add_buffer(&buffer, &minor, SIZE8);
	add_buffer(&buffer, &rev, SIZE8);

	send_data(&buffer);
}
Пример #30
0
void mapcache_create(uint32 mapnum)
{
	buffer_t buffer;
	uint32 x = 0, y = 0;

	clear_buffer(&buffer);

	add_opcode(&buffer, SMAPDATA);
	add_buffer(&buffer, &mapnum, SIZE32);
	add_string(&buffer, map(mapnum)->name );
	add_buffer(&buffer, &map(mapnum)->moral,SIZE8);
	add_buffer(&buffer, &map(mapnum)->music,SIZE8);
	add_buffer(&buffer, &map(mapnum)->left,SIZE16);
	add_buffer(&buffer, &map(mapnum)->right,SIZE16);
	add_buffer(&buffer, &map(mapnum)->up,SIZE16);
	add_buffer(&buffer, &map(mapnum)->down,SIZE16);
	add_buffer(&buffer, &map(mapnum)->shop,SIZE16);
	add_buffer(&buffer, &map(mapnum)->bootmap,SIZE32);
	add_buffer(&buffer, &map(mapnum)->bootx,SIZE8);
	add_buffer(&buffer, &map(mapnum)->booty,SIZE8);
	add_buffer(&buffer, &map(mapnum)->revision,SIZE32);

	for( x = 0; x < MAX_MAP_NPCS; x++)
		add_buffer(&buffer, &map(mapnum)->npc[x].num,SIZE16);

	for(x = 0; x < MAX_MAPX; x++){
		for(y = 0; y < MAX_MAPY; y++){
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].type, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].data1, SIZE16);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].data2, SIZE16);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].data3, SIZE16);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].ground.y, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].ground.x, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].ground.tileset, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].mask.y, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].mask.x, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].mask.tileset, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].anim.y, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].anim.x, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].anim.tileset, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].fringe.y, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].fringe.x, SIZE8);
			add_buffer(&buffer,&map(mapnum)->tile[GETXY(x,y)].fringe.tileset, SIZE8);
		}
	}

	clear_buffer(&map_array_cache[mapnum]);
	map_array_cache[mapnum] = buffer;
}