No to zaczynamy
W każdym itemku (kod sma) musi zawierać 2 const'y odpowiadające za nazwa i opis itemku np.
new const perk_name[] = "Naboje Pulkownika";
new const perk_desc[] = "Zadajesz 10(+int) obrazen wiecej";
na 2 publickach, które sprawdzają czy gracz ma item czy nie będą to
public cod_perk_enabled(id)
public cod_perk_disabled(id)
dam tutaj przykładowy schemat jak powinien wyglądać item
#include <amxmodx>
#include <codmod>
new const perk_name[] = "NAZWA PERKU";
new const perk_desc[] = "OPIS PERKU";
public plugin_init()
{ //TUTAJ ZOSTAWIAMY TAK JAK JEST,
register_plugin(perk_name, "1.0", "QTM_Peyote");
cod_register_perk(perk_name, perk_desc);
}
public cod_perk_enabled(id)
{
//TUTAJ KOD TY JEST WŁĄCZONY
}
public cod_perk_disabled(id)
{
//TUTAJ KOD GDY JEST WYŁACZONY
}
teraz przejdźmy do przykładu, mój item będzie się nazywał Wiktorios Amenos
#include <amxmodx>
#include <codmod>
new const perk_name[] = "Wiktorios Amenos";
new const perk_desc[] = "Dostajesz 500 hp !";
public plugin_init()
{
register_plugin(perk_name, "1.0", "QTM_Peyote");
cod_register_perk(perk_name, perk_desc);
}
public cod_perk_enabled(id)
{
//I TUTAJ KOD KTÓRY DODAJE HP, WSZYSTKO JEST Z INC. COD MOD
cod_set_user_bonus_health(id, cod_get_user_health(id, 0, 0)+500);
}
public cod_perk_disabled(id)
{
// A TUTAJ USTAWIAMY NA ODWRÓT CZYLI ODJĄĆ 500 NIE DODAĆ
cod_set_user_bonus_health(id, cod_get_user_health(id, 0, 0)-500);
}
Dobra podstawy mamy, na dodawanie/odejmowanie hp, kondycji, wytrzymałości, inteligenji itp.
A co jeśli trzeba dodać item z jakąś inną funkcją niż te które są w codmod.inc??
musimy wtedy użyć tego schematu
#include <amxmodx>
#include <codmod>
new const perk_name[] = "NAZWA PERKU";
new const perk_desc[] = "OPIS PERKU";
new bool:ma_perk[33]; // on nam będzie włączać/wyłączać item
public plugin_init()
{ //TUTAJ ZOSTAWIAMY TAK JAK JEST,
register_plugin(perk_name, "1.0", "QTM_Peyote");
cod_register_perk(perk_name, perk_desc);
}
public cod_perk_enabled(id)
{
ma_perk[id] = true
}
public cod_perk_disabled(id)
{
ma_perk[id] = false
}[
public nazwa(id)
{
if(!ma_perk[id]){
//tutaj nasz kod, co ma robić item
}
}
w publicku który daje funkcje co ma robić dany item ma być w if(!ma_perk[id])
teraz przykład, mój plugin będzie się zwał Sffitaśny ŁadaŁ
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
new const perk_name[] = "Sffitaśny ŁadaŁ";
new const perk_desc[] = "Widzisz na radarze swoicj wrogów";
new bool:ma_perk[33]
new const sound_radar[] = "radar.wav";
new g_msgHostageAdd, g_msgHostageDel, g_maxplayers;
new radar[33];
public plugin_init()
{
register_plugin(perk_name, "1.0", "QTM_Peyote");
cod_register_perk(perk_name, perk_desc);
//tutaj są potrzebne rzeczy aby działał radar
g_msgHostageAdd = get_user_msgid("HostagePos");
g_msgHostageDel = get_user_msgid("HostageK");
g_maxplayers = get_maxplayers();
for (new i = 1; i<=g_maxplayers;i++) radar[i] = false;
set_task (2.0,"radar_scan",_,_,_,"b");
}
public cod_perk_enabled(id)
{
ma_perk[id]=true
}
public cod_perk_disabled(id)
{
ma_perk[id]=false
}
public plugin_precache()
{
precache_sound(sound_radar);
}
//NIŻEJ WIDZIMY FUNKCJE DO RADARU, JAK WIDZIECIE NA POCZĄTKU DAŁEM if(ma_perk[id])
public radar_scan(id)
{
if(!ma_perk[id])
{
new PlayerCoords[3];
new id;
new Players[32];
new i;
new playerCount = 0;
for (id=1; id<=g_maxplayers; id++)
{
if((!is_user_alive(id))||(!radar[id])) continue;
if(get_players(Players, playerCount, "a") &&is_user_alive(id))
{
playerCount++;
}
for (i=1;i<=playerCount;i++)
{
get_user_origin(i, PlayerCoords)
message_begin(MSG_ONE_UNRELIABLE, g_msgHostageAdd, {0,0,0}, id)
write_byte(id)
write_byte(i)
write_coord(PlayerCoords[0])
write_coord(PlayerCoords[1])
write_coord(PlayerCoords[2])
message_end()
message_begin(MSG_ONE_UNRELIABLE, g_msgHostageDel, {0,0,0}, id)
write_byte(i)
message_end()
}
emit_sound(id, CHAN_ITEM, sound_radar, 1.0, ATTN_NORM, 0, PITCH_NORM);
}
}
return PLUGIN_CONTINUE;
}
teraz wystarczy wrzucić sound do pliku i jazda
Myślę że troszkę wam dodałem wiedzy jak robić itemki , oczywiście radar nie sprawdzałem czy działa
Zakaz kopiowania na inne fora, proszę zgłaszać swoje błędy, nie wiem czy owe kody wyżej działają bo pisałem je z palca bez sprawdzania(kompilowanie)
Pozdro Frajer
Użytkownik QTM. Peyote edytował ten post 13.12.2010 15:16