Příspěvků: 6
• Stránka 1 z 1
Pawn - Problémy
Zdravím, sem budem písať svoje problémy ohľadne Pawna (resp. otázky, aby som nemusel stále zakladať nové témy).
Môžete mi prosím niekto skontrolovať následujúci kód a prípadne mi ho opraviť?
Jedná sa teda hlavne o túto časť:
Otázka: Ako sa pracuje so zavolaním funkcie? Skúsil som to urobiť následne:
ale keď to dám kompilovať, tak mi to napíše tieto chyby:
Čo vlastne teda chcem urobiť?: Chcem vytvoriť Shop pre T, v ktorom bude na výber "Sila 1", "Sila 2", atď... a každá sila nastaví iný damage danému hráčovi. Takže napr. Sila 1 nastaví dmg na 70.0. Rád by som to ale urobil cez zavolanie funkcie, nech je to čo najjednoduchšie.
Môžete mi prosím niekto skontrolovať následujúci kód a prípadne mi ho opraviť?
- Kód: Vybrat vše
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
public plugin_init()
{
register_plugin("T and CT shop", "1.0", "RayCodeCSC")
register_clcmd("say /tshop", "shop_t")
register_clcmd("say /ctshop", "shop_ct")
RegisterHam(Ham_Spawn, "player", "after_spawn_player")
}
public after_spawn_player(id)
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
client_cmd(id, "say /ctshop")
}
}
public shop_ct(id)
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
new mct = menu_create("Vyberte si z menu:", "ct_shop_selection")
menu_additem(mct, "Zakladne Zbrane \r*VIP*")
menu_additem(mct, "M4A1 \r*Zdarma*")
menu_additem(mct, "AK47 \r*Zdarma*")
menu_additem(mct, "DEAGLE \r*Zdarma*")
menu_additem(mct, "Zdravie + Vesta 150 \r*600 $*")
menu_display(id, mct)
}
else if(cs_get_user_team(id) == CS_TEAM_T)
{
client_print(id, print_chat, "[AMXX SHOP] Nie si CT!")
}
}
public ct_shop_selection(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch(item)
{
case 0:
{
if(get_user_flags(id) & ADMIN_LEVEL_A)
{
give_item(id, "weapon_m4a1")
give_item(id, "weapon_ak47")
give_item(id, "weapon_deagle")
give_item(id, "weapon_knife")
cs_set_user_bpammo(id, CSW_M4A1, 1000)
cs_set_user_bpammo(id, CSW_AK47, 1000)
cs_set_user_bpammo(id, CSW_DEAGLE, 1000)
set_user_health(id, get_user_health(id) + 150)
set_user_armor(id, get_user_armor(id) + 150)
}
else
{
client_print(id, print_chat, "[VIP] Nie si VIP!")
}
}
case 1:
{
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 250)
}
case 2:
{
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 250)
}
case 3:
{
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 50)
}
case 4:
{
if(cs_get_user_money(id) > 600)
{
set_user_health(id, 150)
set_user_armor(id, 150)
cs_set_user_money(id, cs_get_user_money(id) - 600)
}
else if(cs_get_user_money(id) < 600)
{
client_print(id, print_chat, "[SHOP] Nemas dostatok penazi!")
}
}
}
}
public shop_t(id)
{
new mt = menu_create("Vyber si z menu:", "shop_t_selection")
menu_additem(mt, "Knife - 5 DMG (10 $)")
menu_additem(mt, "Knife - 30 DMG (400 $)")
menu_additem(mt, "Knife - 70 DMG (11200 $)")
menu_display(id, mt)
}
Jedná sa teda hlavne o túto časť:
- Kód: Vybrat vše
public shop_t(id)
{
new mt = menu_create("Vyber si z menu:", "shop_t_selection")
menu_additem(mt, "Knife - 5 DMG (10 $)")
menu_additem(mt, "Knife - 30 DMG (400 $)")
menu_additem(mt, "Knife - 70 DMG (11200 $)")
menu_display(id, mt)
}
Otázka: Ako sa pracuje so zavolaním funkcie? Skúsil som to urobiť následne:
- Kód: Vybrat vše
public shop_t(id)
{
new mt = menu_create("Vyber si z menu:", "shop_t_selection")
menu_additem(mt, "Knife - 5 DMG (10 $)")
menu_additem(mt, "Knife - 30 DMG (400 $)")
menu_additem(mt, "Knife - 70 DMG (11200 $)")
menu_display(id, mt)
}
public shop_t_selection(id, menu, item)
{
if(item == MENU_EXITň)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
switch(item)
{
case 0:
{
is_damage1(victim, attacker, inflictor, Float:damage, damagebits)
}
case 1:
{
is_damage2(victim, attacker, inflictor, Float:damage, damagebits)
}
case 2:
{
is_damage3(victim, attacker, inflictor, Float:damage, damagebits)
}
}
}
public is_damaged1(victim, attacker, inflictor, Float:damage, damagebits)
{
if(get_user_weapon(attacker) == CSW_KNIFE)
{
SetHamParamFloat(4, damage * 5.0)
}
}
public is_damaged2(victim, attacker, inflictor, Float:damage, damagebits)
{
if(get_user_weapon(attacker) == CSW_KNIFE)
{
SetHamParamFloat(4, damage * 30.0)
}
}
public is_damaged3(victim, attacker, inflictor, Float:damage, damagebits)
{
if(get_user_weapon(attacker) == CSW_KNIFE)
{
SetHamParamFloat(4, damage * 70.0)
}
}
ale keď to dám kompilovať, tak mi to napíše tieto chyby:
- Kód: Vybrat vše
undefined symbol "is_damaged1"
undefined symbol "attacker"
undefined symbol "inflictor"
Čo vlastne teda chcem urobiť?: Chcem vytvoriť Shop pre T, v ktorom bude na výber "Sila 1", "Sila 2", atď... a každá sila nastaví iný damage danému hráčovi. Takže napr. Sila 1 nastaví dmg na 70.0. Rád by som to ale urobil cez zavolanie funkcie, nech je to čo najjednoduchšie.
- MaceZz
- Amatér
- Příspěvky: 48
- Registrován: 01 zář 2019, 16:36
Pawn - Problémy
A uz jsi vyzkousel treba tohle? 

-
Rumcajz - Patriot
- Příspěvky: 97323
- Registrován: sob 29.led 1999 0:11:22
Re: Pawn - Problémy
Ešte dodám: Kód som našiel na internete, len som si ho upravil podľa seba. Autora, verziu a názov som zachoval, to som nemenil (takže autor nie som ja). Upravoval som čisto len kód.
- MaceZz
- Amatér
- Příspěvky: 48
- Registrován: 01 zář 2019, 16:36
Re: Pawn - Problémy
Bud pouzivej jen to co je hotove, nebo zacni studovat tohle:
Pokud s programovanim zacinas, nebo jsi jeste ani nezacal, doporucuju spis tu prvni moznost, ta druha je na dloooouho
Pokud s programovanim zacinas, nebo jsi jeste ani nezacal, doporucuju spis tu prvni moznost, ta druha je na dloooouho

-
useless - CS 1.6 Support kapitán
- Příspěvky: 2986
- Registrován: 29 čer 2013, 17:31
Re: Pawn - Problémy
Kedysi som bol Pawner a tvoril som pluginy pre GTA SA:MP a CS 1.6 Servery. Ale to už je cca 6 rokov dozadu. A za tých 6 rokov už skatka zabudnem na niektoré funkcie, čo a ako funguje atď...
Pawn (CS 1.6) viem. Takto.. ja by som ten shop aj dokázal urobiť, ale je toľko vecí čo ma zaujíma ako fungujú. Ten link, čo si mi poslal si určite prečítam, ďakujem.
Ja ale sa radšej učím skôr tím, že tvorím pluginy (praxou), a nie že teraz budem čítať články.
Mohol by mi teda prosím niekto ten plugin upraviť tak, ako je správne? Napadlo ma to ešte urobiť cez set_task(id, "naziv_funkcie"), ale keďže som na Servery sám, nemám to na kom odskúšať. Inak kompilácia (ak to urobím cez set_tak) prebehne v poriadku.
Pawn (CS 1.6) viem. Takto.. ja by som ten shop aj dokázal urobiť, ale je toľko vecí čo ma zaujíma ako fungujú. Ten link, čo si mi poslal si určite prečítam, ďakujem.
Ja ale sa radšej učím skôr tím, že tvorím pluginy (praxou), a nie že teraz budem čítať články.
Mohol by mi teda prosím niekto ten plugin upraviť tak, ako je správne? Napadlo ma to ešte urobiť cez set_task(id, "naziv_funkcie"), ale keďže som na Servery sám, nemám to na kom odskúšať. Inak kompilácia (ak to urobím cez set_tak) prebehne v poriadku.
- MaceZz
- Amatér
- Příspěvky: 48
- Registrován: 01 zář 2019, 16:36
Re: Pawn - Problémy
A ešte otázka:
Ako mám zavolať funkciu? Skúsil som to následovne:
A nefunguje to. Ako mám teda správne zavolať funkciu test?
Ako mám zavolať funkciu? Skúsil som to následovne:
- Kód: Vybrat vše
public plugin_init()
{
register_plugin("Test", "1.0", "MaceZz")
register_clcmd("say /test" "testing_of")
RegisterHam(Ham_TakeDamage, "player", "test")
}
public testing_of(id)
{
test(victim, attacker, inflictor, Float:damage, damagebits)
}
public test(victim, attacker, inflictor, Float:damage, damagebits)
{
if(get_user_weapon(attacker) == CSW_KNIFE)
{
SetHamParamFloat(4, damage * 6.0)
}
}
A nefunguje to. Ako mám teda správne zavolať funkciu test?
- MaceZz
- Amatér
- Příspěvky: 48
- Registrován: 01 zář 2019, 16:36
Re: Pawn - Problémy
Ten test se ti vykoná automaticky, jakmile někdo udělá damage... Nemusíš to executovat ty.
R.
R.
Většina lidí není spokojena s výdělkem, měnit práci chce ale málokdo
RaidoNek.eu
RaidoNek.eu
-
RaidoN - Pokročilý
- Příspěvky: 74
- Registrován: 15 kvě 2020, 09:04
- Bydliště: null
Příspěvků: 6
• Stránka 1 z 1
Kdo je online
Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků