Перейти к содержанию

Проблема с Кеш шопом 2014 клиент


Рекомендуемые сообщения

С тех пор, как еАмод был ею.

Ну тогда, дабы не быть голословным - будь добр ссылочку на паблик скрипт сбора статистики, как в еАмоде (ГВ, БГ, урон скиллы и прочее). Очень любопытно посмотреть

Добавить 2 строчки на увеличение переменных и считывание её в сорсах - это теперь стало сложным? ссорьки :(

  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты

Переменных там очень много. Сбор статистики производится в разных участках исходного кода сервера.

Это большая модификация :)

struct s_killrank {

unsigned short

kill_count,

death_count;

int score;

};

struct s_battleground_stats {

unsigned int

top_damage,

damage_done,

damage_received,

boss_damage;

unsigned short

// Triple Inferno

skulls,

ti_wins, ti_lost, ti_tie,

// Tierra EoS

eos_flags,

eos_bases,

eos_wins, eos_lost, eos_tie,

// Tierra Bossnia

boss_killed,

boss_flags,

boss_wins, boss_lost, boss_tie,

// Tierra Domination

dom_bases,

dom_off_kills,

dom_def_kills,

dom_wins, dom_lost, dom_tie,

// Flavius TD

td_kills,

td_deaths,

td_wins, td_lost, td_tie,

// Flavius SC

sc_stole,

sc_captured,

sc_droped,

sc_wins, sc_lost, sc_tie,

// Flavius CTF

ctf_taken,

ctf_captured,

ctf_droped,

ctf_wins, ctf_lost, ctf_tie,

// Conquest

emperium_kill,

barricade_kill,

gstone_kill,

cq_wins, cq_lost,

// Rush

ru_captures,

ru_wins, ru_lost;

unsigned int // Ammo

sp_heal_potions,

hp_heal_potions,

yellow_gemstones,

red_gemstones,

blue_gemstones,

poison_bottles,

acid_demostration,

acid_demostration_fail,

support_skills_used,

healing_done,

wrong_support_skills_used,

wrong_healing_done,

sp_used,

zeny_used,

spiritb_used,

ammo_used;

unsigned short

kill_count,

death_count,

win, lost, tie,

leader_win, leader_lost, leader_tie,

deserter, rank_games;

int score, points, rank_points;

};

struct s_woestats {

int score;

unsigned short

kill_count,

death_count;

unsigned int

top_damage,

damage_done,

damage_received;

unsigned int

emperium_damage,

guardian_damage,

barricade_damage,

gstone_damage;

unsigned short

emperium_kill,

guardian_kill,

barricade_kill,

gstone_kill;

unsigned int // Ammo

sp_heal_potions,

hp_heal_potions,

yellow_gemstones,

red_gemstones,

blue_gemstones,

poison_bottles,

acid_demostration,

acid_demostration_fail,

support_skills_used,

healing_done,

wrong_support_skills_used,

wrong_healing_done,

sp_used,

zeny_used,

spiritb_used,

ammo_used;

};

struct s_skillcount {

unsigned short id,count;

};

Да и дело тут не в сложности реализации. А в том, что нету паблик аналога. ;)

  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

Переменных там очень много. Сбор статистики производится в разных участках исходного кода сервера.

Это большая модификация :)

struct s_killrank {

unsigned short

kill_count,

death_count;

int score;

};

struct s_battleground_stats {

unsigned int

top_damage,

damage_done,

damage_received,

boss_damage;

unsigned short

// Triple Inferno

skulls,

ti_wins, ti_lost, ti_tie,

// Tierra EoS

eos_flags,

eos_bases,

eos_wins, eos_lost, eos_tie,

// Tierra Bossnia

boss_killed,

boss_flags,

boss_wins, boss_lost, boss_tie,

// Tierra Domination

dom_bases,

dom_off_kills,

dom_def_kills,

dom_wins, dom_lost, dom_tie,

// Flavius TD

td_kills,

td_deaths,

td_wins, td_lost, td_tie,

// Flavius SC

sc_stole,

sc_captured,

sc_droped,

sc_wins, sc_lost, sc_tie,

// Flavius CTF

ctf_taken,

ctf_captured,

ctf_droped,

ctf_wins, ctf_lost, ctf_tie,

// Conquest

emperium_kill,

barricade_kill,

gstone_kill,

cq_wins, cq_lost,

// Rush

ru_captures,

ru_wins, ru_lost;

unsigned int // Ammo

sp_heal_potions,

hp_heal_potions,

yellow_gemstones,

red_gemstones,

blue_gemstones,

poison_bottles,

acid_demostration,

acid_demostration_fail,

support_skills_used,

healing_done,

wrong_support_skills_used,

wrong_healing_done,

sp_used,

zeny_used,

spiritb_used,

ammo_used;

unsigned short

kill_count,

death_count,

win, lost, tie,

leader_win, leader_lost, leader_tie,

deserter, rank_games;

int score, points, rank_points;

};

struct s_woestats {

int score;

unsigned short

kill_count,

death_count;

unsigned int

top_damage,

damage_done,

damage_received;

unsigned int

emperium_damage,

guardian_damage,

barricade_damage,

gstone_damage;

unsigned short

emperium_kill,

guardian_kill,

barricade_kill,

gstone_kill;

unsigned int // Ammo

sp_heal_potions,

hp_heal_potions,

yellow_gemstones,

red_gemstones,

blue_gemstones,

poison_bottles,

acid_demostration,

acid_demostration_fail,

support_skills_used,

healing_done,

wrong_support_skills_used,

wrong_healing_done,

sp_used,

zeny_used,

spiritb_used,

ammo_used;

};

struct s_skillcount {

unsigned short id,count;

};

Да и дело тут не в сложности реализации. А в том, что нету паблик аналога. ;)

а я пытался вытащить бг 2.0 с рАмода но у меня ещё мало знаний) безуспешно)

Ссылка на комментарий
Поделиться на другие сайты

С тех пор, как еАмод был ею.

Ну тогда, дабы не быть голословным - будь добр ссылочку на паблик скрипт сбора статистики, как в еАмоде (ГВ, БГ, урон скиллы и прочее). Очень любопытно посмотреть

Добавить 2 строчки на увеличение переменных и считывание её в сорсах - это теперь стало сложным? ссорьки :(

Functor ниже расписал. Это не 2 строчки на увеличение переменных, это много кусков кода в разных частях эмулятора. При этом в паблике этого нет. И при всем этом 90% серверов (на мой взгляд) покупают еАмод в первую очередь ради этой статистики.

Ссылка на комментарий
Поделиться на другие сайты

С тех пор, как еАмод был ею.

Ну тогда, дабы не быть голословным - будь добр ссылочку на паблик скрипт сбора статистики, как в еАмоде (ГВ, БГ, урон скиллы и прочее). Очень любопытно посмотреть

Добавить 2 строчки на увеличение переменных и считывание её в сорсах - это теперь стало сложным? ссорьки :(

Functor ниже расписал. Это не 2 строчки на увеличение переменных, это много кусков кода в разных частях эмулятора. При этом в паблике этого нет. И при всем этом 90% серверов (на мой взгляд) покупают еАмод в первую очередь ради этой статистики.

Да, Я брал чисто ради БГ и Достижений)

(которые я так и не понял как заменять, пытался вроде всё без ошибок но не получается)

Ссылка на комментарий
Поделиться на другие сайты

Переменных там очень много. Сбор статистики производится в разных участках исходного кода сервера.

Это большая модификация :)

struct s_killrank {

unsigned short

kill_count,

death_count;

int score;

};

struct s_battleground_stats {

unsigned int

top_damage,

damage_done,

damage_received,

boss_damage;

unsigned short

// Triple Inferno

skulls,

ti_wins, ti_lost, ti_tie,

// Tierra EoS

eos_flags,

eos_bases,

eos_wins, eos_lost, eos_tie,

// Tierra Bossnia

boss_killed,

boss_flags,

boss_wins, boss_lost, boss_tie,

// Tierra Domination

dom_bases,

dom_off_kills,

dom_def_kills,

dom_wins, dom_lost, dom_tie,

// Flavius TD

td_kills,

td_deaths,

td_wins, td_lost, td_tie,

// Flavius SC

sc_stole,

sc_captured,

sc_droped,

sc_wins, sc_lost, sc_tie,

// Flavius CTF

ctf_taken,

ctf_captured,

ctf_droped,

ctf_wins, ctf_lost, ctf_tie,

// Conquest

emperium_kill,

barricade_kill,

gstone_kill,

cq_wins, cq_lost,

// Rush

ru_captures,

ru_wins, ru_lost;

unsigned int // Ammo

sp_heal_potions,

hp_heal_potions,

yellow_gemstones,

red_gemstones,

blue_gemstones,

poison_bottles,

acid_demostration,

acid_demostration_fail,

support_skills_used,

healing_done,

wrong_support_skills_used,

wrong_healing_done,

sp_used,

zeny_used,

spiritb_used,

ammo_used;

unsigned short

kill_count,

death_count,

win, lost, tie,

leader_win, leader_lost, leader_tie,

deserter, rank_games;

int score, points, rank_points;

};

struct s_woestats {

int score;

unsigned short

kill_count,

death_count;

unsigned int

top_damage,

damage_done,

damage_received;

unsigned int

emperium_damage,

guardian_damage,

barricade_damage,

gstone_damage;

unsigned short

emperium_kill,

guardian_kill,

barricade_kill,

gstone_kill;

unsigned int // Ammo

sp_heal_potions,

hp_heal_potions,

yellow_gemstones,

red_gemstones,

blue_gemstones,

poison_bottles,

acid_demostration,

acid_demostration_fail,

support_skills_used,

healing_done,

wrong_support_skills_used,

wrong_healing_done,

sp_used,

zeny_used,

spiritb_used,

ammo_used;

};

struct s_skillcount {

unsigned short id,count;

};

Да и дело тут не в сложности реализации. А в том, что нету паблик аналога. ;)

А теперь перечитываем что я написал и увидим, что было написано про ДВЕ СТРОЧКИ, а не две переменные. Считать переменную = 1 строка, изменить её значение = вторая строка, и не важно, как много их, это не будет сложно сделать, кек.

Ссылка на комментарий
Поделиться на другие сайты

А теперь перечитываем что я написал и увидим, что было написано про ДВЕ СТРОЧКИ, а не две переменные. Считать переменную = 1 строка, изменить её значение = вторая строка, и не важно, как много их, это не будет сложно сделать, кек.

Я правильно прочитал и понял Ваш пост.

Количество переменных указал, чтобы показать объем модификации, а не указать на то, что Вы ошиблись c количеством переменных.

Модификация является большой, даже если учитывать 2 строчки дополнительного кода на переменную. Но их явно не 2 на переменную.

Тут нужно учитывать считывание и запись данных в БД, обнуление и обновление данных, кучу проверок и наличие дополнительного вспомогательного кода.

Да и вообще я не понимаю к чему Вы завели разговор о сложности реализации.

Речь же шла о предоставлении ссылки на паблик аналог, в качестве подтверждения Ваших слов про сборку паблик скриптов. :)

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Да. Также помню, что Вы мне написали в PM и мы там ведем разговор о Вашей проблеме. ;)

Скидывайте ссылку на эмуль и EXE в PM. Будет свободное время - посмотрю.

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Да. Также помню, что Вы мне написали в PM и мы там ведем разговор о Вашей проблеме. ;)

Скидывайте ссылку на эмуль и EXE в PM. Будет свободное время - посмотрю.

уже Скинул)))

Ссылка на комментарий
Поделиться на другие сайты

В файле ../src/map/clif.c меняем код функции clif_cashshop_ack на:


void clif_cashshop_ack(struct map_session_data* sd, int error)
{
int fd = sd->fd;
WFIFOHEAD(fd, packet_len(0x289));
WFIFOW(fd,0) = 0x289;
WFIFOL(fd,2) = sd->cashPoints;
#if PACKETVER < 20070711
WFIFOW(fd,6) = TOW(error);
#else
WFIFOL(fd,6) = sd->kafraPoints;
WFIFOW(fd,10) = TOW(error);
#endif
WFIFOSET(fd, packet_len(0x289));
}

В файле ../src/map/clif.c меняем код функции clif_parse_cashshop_buy на:


void clif_parse_cashshop_buy(int fd, struct map_session_data *sd) {
struct s_packet_db* info;
int cmd = RFIFOW(fd,0);

nullpo_retv(sd);

info = &packet_db[sd->packet_ver][cmd];

if( sd->state.trading || !sd->npc_shopid ) {
clif_cashshop_ack(sd,1);
return;
} else if( sd->state.secure_items ) {
clif_displaymessage(sd->fd, "You can't shop. Blocked with @security");
clif_cashshop_ack(sd,1);
return;
} else {
#if PACKETVER < 20101116
unsigned short nameid = RFIFOW(fd,info->pos[0]);
short amount = RFIFOW(fd,info->pos[1]);
int points = RFIFOL(fd,info->pos[2]);

clif_cashshop_ack(sd,npc_cashshop_buy(sd, nameid, amount, points));
#else
int s_itl = (cmd==0x848)?10:4; //item _list size (depend on cmd even for 2013+)
int len = RFIFOW(fd,info->pos[0]);
int points = RFIFOL(fd,info->pos[1]);
int count = RFIFOW(fd,info->pos[2]);
unsigned short* item_list = (unsigned short*)RFIFOP(fd,info->pos[3]);

if( len < 10 || len != 10 + count * s_itl) {
ShowWarning("Player %u sent incorrect cash shop buy packet (len %u:%u)!\n", sd->status.char_id, len, 10 + count * s_itl);
return;
}

if(cmd == 0x848) {
if (cashshop_buylist( sd, points, count, item_list))
clif_cashshop_ack(sd,0);
return;
} else {
clif_cashshop_ack(sd,npc_cashshop_buylist(sd,points,count,item_list));
return;
}
#endif
}
}

  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...
×
×
  • Создать...
Яндекс.Метрика