hlmod.hu
https://hlmod.hu/

INC készítése
https://hlmod.hu/viewtopic.php?f=14&t=6092
Oldal: 1 / 2

Szerző:  Nandee [ 2012.09.27. 14:51 ]
Hozzászólás témája:  INC készítése

Sziasztok!
Most azt fogom fogom leírni, hogyan készítsünk inc-et. Ezeket sok mindenre lehet használni. Pl.: Pluginok közötti kommunikáció, stock több pluginban alkalmazása, forward készítése stb.

1. Inc fájl kezdete, fájlnév:
Az inc fájloknak az első négy sorának igy kell kinéznie:
SMA Forráskód: [ Mindet kijelol ]
  1. #if defined _pelda_included
  2. #endinput
  3. #endif
  4. #define _pelda_included

A példa szerint nekem majd ezt kell a plugin elejére írnom:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <pelda>

És a fájl neve ez lesz:
Kód:
pelda.inc

Értelemszerűen ha a "pelda" szót megváltoztathatod.

2. Stock
Az inc fájlba lehet stock-ot írni. Ezzel azt érjük el, hogy ha egy stock-ot több plugin-ba szeretnénk használni, akkor nem kell az összesbe beleírni.
Egy példa: Színes chat + ékezetek
De hogy itt is legyen valami írok még egy példát:
(Ha valakit érdekel bomba csíkot lehet vele csinálni :mrgreen:)
Van például ez a stock-om:
SMA Forráskód: [ Mindet kijelol ]
  1. stock progress_bar(index,pbtime)
  2. {
  3. message_begin(MSG_ONE,108,{0,0,0},index)
  4. write_byte(pbtime)
  5. write_byte(0)
  6. message_end()
  7. }

Ezt szeretném több plugin-ban használni, inc-et csinálok neki.
Kezdés:
SMA Forráskód: [ Mindet kijelol ]
  1. #if defined _progressbar_included
  2. #endinput
  3. #endif
  4. #define _progressbar_included

Stocknál ha másik inc-et használunk azt is fel kell tüntetni:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>

Es a végére a stock:
SMA Forráskód: [ Mindet kijelol ]
  1. stock progress_bar(index,pbtime)
  2. {
  3. message_begin(MSG_ONE,108,{0,0,0},index)
  4. write_byte(pbtime)
  5. write_byte(0)
  6. message_end()
  7. }

És végül így fog kinézni:
SMA Forráskód: [ Mindet kijelol ]
  1. #if defined _progressbar_included
  2. #endinput
  3. #endif
  4. #define _progressbar_included
  5.  
  6. #include <amxmodx> //stock-hoz szükséges include
  7.  
  8. stock progress_bar(index,pbtime) //a stock
  9. {
  10. message_begin(MSG_ONE,108,{0,0,0},index)
  11. write_byte(pbtime)
  12. write_byte(0)
  13. message_end()
  14. }

Egy inc-be több stock-ot is rakhatunk.

3. Forward
Amit az előbbiben leírtam nem fogom még egyszer leírni! A forward-ot arra lehet használni, amikor "történik valami" a játékban (pl.: Zombi módban megfertőznek, stb.) arra valamilyen funkciót rakni. Sokszor ezt több plugin-ban is használni szeretnénk erre vannak az inc-ek.
Szükségünk lesz egy vezérlő plugin-ra, ebből fogjuk irányítani...
A kezdést nem írom le. Az esemény amit használni fogok, az ha valaki chat-be írja a "teszt" szót.
Példa: forwardtest.inc:
SMA Forráskód: [ Mindet kijelol ]
  1. #if defined _forwardtest_included
  2. #endinput
  3. #endif
  4. #define _forwardtest_included
  5.  
  6. forward test_command(id) //forward amit_szeretnél(pl:játékos ID)

"vezér plugin":
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2.  
  3. new fwd_testcmd //Egy változóra lesz szükségünk a forward-hoz
  4.  
  5. public plugin_init()
  6. {
  7. register_plugin("[INC] Forward teszt","1.0","Nandee") //Plugin neve, verzió, készítő
  8. fwd_testcmd=CreateMultiForward("test_command", ET_IGNORE, FP_CELL) //Funkciók: 1.amit az incbe a "forward" és a "(" közé írtunk
  9. register_clcmd("say teszt","cmd_teszt")
  10. }
  11.  
  12. public cmd_teszt(id)
  13. {
  14. client_print(id,print_chat,"Beirtad a chat-be a teszt szot!") //Chat üzenet
  15. new fwdtestret
  16.   ExecuteForward(fwd_testcmd,fwdtestret,id) //1. a változó amitez elején megadtunk, 2.visszatérés, 3. A játékos ID-je
  17. }

Forward használata:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <forwardtest> //inc
  3.  
  4. public plugin_init()
  5. {
  6. register_plugin("[INC] Forward teszt próba","1.0","Nandee") //Plugin neve, verzió, készítő
  7. }
  8.  
  9. public test_command(id)
  10. {
  11. client_print(id,print_chat,"A forward mukodik!") //Visszajelzés a chat-ben
  12. }


4. Native
Ehhez is ugyanúgy "vezér plugin"-ra lesz szükségünk mint a forward-hoz. Ez is sok mindenre használható, én a példámban egy olyan változót fogok készíteni, mint zombi módban a lőszer csomag(aki nem ismeri fizető eszköz). Ehhez már csak példákat írok szerintem ezekből már érteni lehet ;)
forintmod.inc:
SMA Forráskód: [ Mindet kijelol ]
  1. #if defined _forintmod_included
  2. #endinput
  3. #endif
  4. #define _forintmod_included
  5.  
  6. native get_user_forint(id)
  7. native set_user_forint(id,amount)

Vezér plugin:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2.  
  3. new forint[33] //Egy változó amin a forintot tároljuk
  4.  
  5. public plugin_init()
  6. {
  7. register_plugin("[INC] Forint mod","1.0","Nandee") //Plugin neve, verzió, készítő
  8. }
  9.  
  10. public plugin_natives()
  11. {
  12. register_native("set_user_forint","native_set_user_forint",1)
  13. register_native("get_user_forint","native_get_user_forint",1)
  14. }
  15.  
  16. public native_get_user_forint(index)
  17. {
  18. return forint[index]
  19. }
  20. public native_set_user_forint(index,amount)
  21. {
  22. forint[index]=amount
  23. }

Példa a felhasználásra:
SMA Forráskód: [ Mindet kijelol ]
  1. #include <amxmodx>
  2. #include <forintmod> //inc
  3.  
  4. public plugin_init()
  5. {
  6. register_plugin("[INC] Forint mod teszt","1.0","Nandee") //Plugin neve, verzió, készítő
  7. register_clcmd("say /penz","cmd_penz") //játékos parancs
  8. register_clcmd("say /penzkell","cmd_penzkell") //játékos parancs
  9. }
  10.  
  11. public cmd_penz(id)
  12. {
  13. client_print(id,print_chat,"A penzed:%d",get_user_forint(id))
  14. }
  15.  
  16. public cmd_penzkell(id)
  17. {
  18. client_print(id,print_chat,"Kaptal 300 forintot!")
  19. set_user_forint(id,get_user_forint(id)+300)
  20. }


Vége!
UI:
Szerintem elég konyhanyelven fogalmaztam, aki nem érti az írjon hozzászólást, aki érti és hibát talált vagy valamit jobban írna le az jelezzen nekem.
Aki nem találja a köszönöm gombot annak a hozzászólás jobb alsó sarkában van :)

Szerző:  Bence98007 [ 2012.09.27. 14:54 ]
Hozzászólás témája:  Re: INC készítése

Szép!

Szerző:  Nandee [ 2012.09.27. 14:57 ]
Hozzászólás témája:  Re: INC készítése

Bence98007 írta:
Szép!

Köszi :) Több mint 2 óráig írtam 8-)

Szerző:  Bence98007 [ 2012.09.27. 14:58 ]
Hozzászólás témája:  Re: INC készítése

Azért mondtam, hogy szép. :)

Szerző:  HunGamer [ 2012.09.27. 15:59 ]
Hozzászólás témája:  Re: INC készítése

Gratulálok. Tényleg szép lett. Annyit fűznék csak hozzá hogy a ,,vezér pluginba" nem kell a saját incet beírni.

Szerző:  kiki [ 2012.09.27. 16:04 ]
Hozzászólás témája:  Re: INC készítése

Nem rosz, szerintem a lényeget tartalmazza és a kezdők is megértik!

Ez kimondottan tetszik:
set_user_forint(id,amount) //Fele angol fele magyar:)

Illetve "native" és "Forward"-hosz nem muszáj API plugin amit pawnban írsz, egyszerűbb és hatékonyabb több dolgot tudsz elérni ha modulnak írod meg!

Szerző:  Nandee [ 2012.09.27. 16:21 ]
Hozzászólás témája:  Re: INC készítése

HunGamer írta:
Gratulálok. Tényleg szép lett. Annyit fűznék csak hozzá hogy a ,,vezér pluginba" nem kell a saját incet beírni.
Köszi oké kijavítom :)
kiki írta:
Nem rosz, szerintem a lényeget tartalmazza és a kezdők is megértik!
:) :) :) :)
kiki írta:
Ez kimondottan tetszik:
set_user_forint(id,amount) //Fele angol fele magyar:)
Ez jutott eszembe :)
kiki írta:
Illetve "native" és "Forward"-hosz nem muszáj API plugin amit pawnban írsz, egyszerűbb és hatékonyabb több dolgot tudsz elérni ha modulnak írod meg!
Ezt viszont nem teljesen értem :shock: :mrgreen:

Szerző:  Vinnice [ 2012.09.27. 20:27 ]
Hozzászólás témája:  Re: INC készítése

Sziasztok!
Megpróbáltam úgy ahogy le van írva csak ezt a hiba üzenetet kaptam.
Kód:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Symbol already defined: "plugin_init" on line 5
Error: Undefined symbol "get_user_forint" on line 13
Error: Undefined symbol "set_user_forint" on line 19

3 Errors.
Could not locate output file C:\Documents and Settings\Vinnice\Asztal\Pluginjaim\compiled\Untitled.amx (compile failed).


UI: ugyan azt csináltam amit leírtál.

Szerző:  IrOn [ 2012.09.27. 20:34 ]
Hozzászólás témája:  Re: INC készítése

Vinnice írta:
Sziasztok!
Megpróbáltam úgy ahogy le van írva csak ezt a hiba üzenetet kaptam.
Kód:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Symbol already defined: "plugin_init" on line 5
Error: Undefined symbol "get_user_forint" on line 13
Error: Undefined symbol "set_user_forint" on line 19

3 Errors.
Could not locate output file C:\Documents and Settings\Vinnice\Asztal\Pluginjaim\compiled\Untitled.amx (compile failed).


UI: ugyan azt csináltam amit leírtál.

forrást is adhatnál, gondolom a "vezér plugint" és a példát egy pluginba bemásoltad, ezért van plugin_init 2x(amint a hibában olvasható)

Szerző:  Vinnice [ 2012.09.27. 20:36 ]
Hozzászólás témája:  Re: INC készítése

igen úgy csináltam és hogy lehetne ezt megcsinálni?
(hogy ne legyen 2x a plugin_init)
UI: Nem egy pluginba írtam hanem 1 .inc egy .sma


Edit: Már Nem kell Köszönöm Megoldottam :D

Oldal: 1 / 2 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/