←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Broń za kasę

  • +
  • -
Kusek - zdjęcie Kusek 21.04.2010

Witam, zrobiłem sobie prosty plugin do wyboru broni, lecz chce dodać aby broń kosztowała jakąś kwotę, jak to zrobić?


public bron(id) {
show_menu(id, Keysbronie, "\rKup bron:^n\y1.\wAK47 - 7500^n\y2.\wM4A1 - 7500^n\y3.\wAWP - 16000^n\y4.\wM249 - 6000^n\y5.\wFAMAS - 6000^n\y6.\wGAIL - 6000^n\y7.\wMP5 - 5000^n\y8.\wSCOUT - 12000^n", -1, "bronie") // Display menu
}

public Pressedbronie(id, key) {
/* Menu:
* 1.AK47
* 2.M4A1
* 3.AWP
* 4.M249
* 5.FAMAS
* 6.GAIL
* 7.MP5
* 8.SCOUT
*/

switch (key) {
case 0: { // 1
give_item(id, "weapon_ak47")
give_item(id, "ammo_762nato")
give_item(id, "ammo_762nato")
Showpistole(id)
}
case 1: { // 2
give_item(id, "weapon_m4a1")
give_item(id, "ammo_556nato")
give_item(id, "ammo_556nato")
Showpistole(id)


jak to zrobić by te bronie były płatne?? oczywiście za kasę w CS


P.S, nie chce robić 2 tematu, gdzie ustawić max ilość kasy w CS?
Odpowiedz

  • +
  • -
Kubaczek <3 - zdjęcie Kubaczek <3 21.04.2010

Wyciągnij z diablo moda funkcje UTIL_Buyformoney :]
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 21.04.2010

public koszt(id,ilosc){

        if cs_get_user_money(id)<koszt) return 0

        else return 1

}



    case 0: { // 1

                       if (!koszt(id,5000) {

                                 client_print(id,print_chat,"masz za malo kasy")

                                 return PLUGIN_HANDLED

                        }

                        give_item(id, "weapon_ak47")

                        give_item(id, "ammo_762nato")

                        give_item(id, "ammo_762nato")

                        cs_set_user_money(id,cs_get_user_money(id)-5000,1)

                        Showpistole(id)

                }

Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 21.04.2010

czyli tak?


register_clcmd("","koszt")

public koszt(id,ilosc){
if cs_get_user_money(id)<koszt) return 0
else return 1
}

switch (key) {
case 0: {
if (!koszt(id,7500) {
client_print(id,print_chat,"Masz za malo kasy")
return PLUGIN_HANDLED
}
give_item(id, "weapon_ak47")
give_item(id, "ammo_762nato")
give_item(id, "ammo_762nato")
Showpistole(id)
}



@Edit
dobra tamto zrobiłem teraz w tym coś źle napisałeś

if cs_get_user_money(id) koszt return 0


z góry + for U
błędy

//AMXXPC compile.exe
// by the AMX Mod X Dev Team

// D:\xxx\xx\scripting\gxxx.sma(31) : error 001: expected token: "
)", but found "-identifier-"
// D:\xxx\xx\scripting\gxxx.sma(31) : error 029: invalid expressio
n, assumed zero
// D:\xxx\xx\scripting\gxxx..sma(31) : error 035: argument type mis
match (argument 1)
// D:\xxx\xx\scripting\gxxx.sma(31) : fatal error 107: too many er
ror messages on one line
//
// Compilation aborted.
// 4 Errors.
// Could not locate output file  D:\xxx\xx\scripting\gxxx..
amx (compile failed).
//
// Compilation Time: 0,3 sec
// ----------------------------------------

Press enter to exit ...



@Edit
1. gdzie ustawić max ilość kasy w CS? Done
2. czy da się wyłączyć aby kasa nie szła za wygraną rundę?
Użytkownik Frajer edytował ten post 24.04.2010 09:38
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 24.04.2010

if cs_get_user_money(id)<koszt) return 0
Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 24.04.2010

chodzi mi o to pytanie pogrubione, bo tamto już sobie zrobiłem :)
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 24.04.2010

nom wystarczy w evencie dodawania kasy zablokowac tylko musisz zrobic warunek czy paka wybuchla czy nie w ktorym teamie sie jest i czy sie bylo zywym na koncu rundy
Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 24.04.2010

tylko musisz zrobic warunek czy paka wybuchla czy nie w ktorym teamie sie jest i czy sie bylo zywym na koncu rundy

a po co ten warunek??, to na każdy z tych warunków jest ilość kasy?



czyli

/* Registers event on which a given function will be called
* Flags:
* "a" - global event.
* "b" - specified.
* "c" - send only once when repeated to other players.
* "d" - call if is send to dead player.
* "e" - to alive.
* NOTE: Due to a long-standing bug that would break compatibility with old plugins,
*       the client id should be checked for alive/dead state if you use d or e.
* Examples for conditions:
* "2=c4" - 2nd parameter of message must be sting "c4".
* "3>10" - 3rd parameter must be greater then 10.
* "3!4" - 3rd must be different from 4.
* "2&Buy" - 2nd parameter of message must contain "Buy" substring.
* "2!Buy" - 2nd parameter of message can't contain "Buy" substring. */
native register_event(const event[],const function[],const flags[],const cond[]="", ... );

/* Registers log event on which the given function will be called
* Examples for conditions:
* "0=World triggered" "1=Game_Commencing"
* "1=say"
* "3=Terrorists_Win"
* "1=entered the game"
* "0=Server cvar"
*/
native register_logevent(const function[], argsnum,  ... );


czyli taki register będzie??
    register_event("Money", "Money", "bed", "23") 

Użytkownik Frajer edytował ten post 24.04.2010 10:35
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 24.04.2010

register_event("Money", "Money", "be", "1<151") 

public money(id){
return PLUGIN_HANDLED
}

tylko nie wiem czy plugin_handled to zablokuje :/
Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 24.04.2010

wykupię po 15 srv 4 slotowy i wypróbuję
leci next+ z góry



@Edit
GoQ nie działa :/

ktoś może inny wie? :)
Użytkownik Frajer edytował ten post 26.04.2010 18:15
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 26.04.2010

register_event("Money", "Money", "be", "1>151") 



public money(id){

return PLUGIN_HANDLED

Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 26.04.2010

to wyłącza całą kasę, nawet tą zdobytą za zabicie ;/
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 27.04.2010

ile kasy jest za zabicie ?? bo event jest wywolywany wtedy gdy ktos dostaje sumq wieksza niz 150$ ale mozesz zablokowac w ogóle i w evencie smierci dorzucac 150 baxow
Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 27.04.2010

1>151


czyli jak tam zamiast 151 np. 1000 to będzie zabierać od 1000$ ?? dobrze myślę czy ta funkcja ma to już tak zakodowane.


Bo mam pewną klasę u którrej idzie 2000$
Użytkownik Frajer edytował ten post 27.04.2010 18:56
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 27.04.2010

tak jak dasz >2000 to zablokuje kwoty wieksze od 2k :D
Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 27.04.2010

czyli jak zabije tego gościa dostanę 1000zł to nie zabierze mi tego? ^^
i jak będę mieć 16k to też mi nie zabierze (od tych zabić za 1000)??


i jak zrobić by kasa zapisywała się na nick z mapy na mapę?
jakbyś mógł napisać fukcję jakąś, lub doprowadzić do niej jakoś ^^
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 27.04.2010

ogolnie to event blokuje dodanie wiekszej qwoty niz 150 :D wiec jak zmienisz na 2k a ktos bedzie mial dostac za pake 3k to nic nie dostanie :D


hmm zalezy ile chcesz miec wpisow bo polecam nVault ale zwykly plik txt tez mozesz sprobowac np po to aby posunac sie dalej a potem wrocic i zmienic system zapisu :D

Spoiler


mozesz sprobowac cos takiego jesli chodzi o vault
Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 27.04.2010

g_vault = nvault_open("kasa")
.
.
.

to do czego? to jest do pliku kasa.txt czy jak?, bo tego nie czaję tylko

to co dałeś wyżej to się będzie zapisywać na nick?
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 27.04.2010

to do plugin_init + zmienna globalna new kasa[33] i jestes w domu Alleluja i do przodu

to bedzie Vault :D
Odpowiedz

  • +
  • -
Kusek - zdjęcie Kusek 27.04.2010

new forsa[33]
public plugin_init()
{
g_vault = nvault_open("forsa")
.
.
.
}

//Zapisuje kase na nick!!!!!!!!!!
public load_speed()
{

new name[33]
get_user_name(id,name,32)
new vaultkey[64], vaultdata[256]
format(vaultkey,63,"%s-forsa",name)
format(vaultdata,255,"%i#,forsa")
nvault_get(g_vault,vaultkey,vaultdata,255)

replace_all(vaultdata, 255, "#", " ")



forsa[id]=str_to_num(vaultdata)

return PLUGIN_CONTINUE
}

public save_speed(id){

new name[33]
get_user_name(id,name,32)
forsa[id]=cs_get_user_money(id)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-forsa",name)
format(vaultdata,255,"%i#,forsa")
nvault_set(g_vault,vaultkey,vaultdata)

return PLUGIN_CONTINUE
}
//Koniec zapisu kasy!!!!


mam tak i błędy, może nie mam jakiegoś include, lub muszę dodać jeszcze te vault


// D:\Krystian\pliki CS\scripting\gta_mod.sma(103) : error 017: undefined symbol
 "g_vault"
// D:\Krystian\pliki CS\scripting\gta_mod.sma(103) : error 017: undefined symbol
 "nvault_open"
// D:\Krystian\pliki CS\scripting\gta_mod.sma(104) : error 029: invalid expressi
on, assumed zero
// D:\Krystian\pliki CS\scripting\gta_mod.sma(105) : error 029: invalid expressi
on, assumed zero
// D:\Krystian\pliki CS\scripting\gta_mod.sma(106) : error 029: invalid expressi
on, assumed zero
// D:\Krystian\pliki CS\scripting\xxx.sma(106 -- 109) : warning 215: express
ion has no effect
// D:\Krystian\pliki CS\scripting\xxx.sma(804) : error 017: undefined symbol
 "nvault_get"
// D:\Krystian\pliki CS\scripting\xxx.sma(804) : warning 215: expression has
 no effect
// D:\Krystian\pliki CS\scripting\xxx.sma(804) : warning 215: expression has
 no effect
// D:\Krystian\pliki CS\scripting\gxxx.sma(804) : warning 215: expression has
 no effect
// D:\Krystian\pliki CS\scripting\xxx.sma(804) : error 001: expected token:
";", but found ")"
// D:\Krystian\pliki CS\scripting\xxx.sma(804) : error 029: invalid expressi
on, assumed zero
// D:\Krystian\pliki CS\scripting\xxx.sma(804) : fatal error 107: too many e
rror messages on one line

Użytkownik Frajer edytował ten post 27.04.2010 20:40
Odpowiedz