Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

::Gogiel:: - zdjęcie

::Gogiel::

Rejestracja: 26.11.2010
Aktualnie: Nieaktywny
Poza forum Ostatnio: 16.05.2020 17:22
-----

#594946 Tworzenie wlasnego EXP MOD'A nvault

Napisane przez ::Gogiel:: w 21.12.2013 03:48

odświeżanie dość starych tematów wiem jest głupotą, lecz w dalszym ciągu dostaję pytania odnośnie powyższego tutoraiala na gg ( na które wchodzę raz na rok - może częściej) Dlatego proszę kierować wszystkie sprawy tutaj :)

Pomoc poza forum jest nie dostępna,


  • +
  • -
  • 1


#554222 Tworzenie wlasnego EXP MOD'A nvault

Napisane przez ::Gogiel:: w 11.07.2013 01:24

Jamdzam http://amxx.pl/topic...vault/?p=486607

Co do zapisu na każdą klasę z Osobna :)


  • +
  • -
  • 1


#457973 Tutorial dla zielonych jak napisać naprawdę łatwy plugin

Napisane przez ::Gogiel:: w 14.09.2012 14:23

Dobry Poradnik jak dla tych "zielonych"

Mogłeś jeszcze opisać że ADMIN_LEVEL_H to jest flaga 't'

Ale mimo wszystko proste i zapewne dla niejednego pomocne :)
  • +
  • -
  • 1


#435372 Tworzenie wlasnego EXP MOD'A nvault

Napisane przez ::Gogiel:: w 23.07.2012 13:17

Po pierwsze wszystkie prawa autorskie tego TUTORIALA NALEŻĄ DO fxfighter zhttp://forums.alliedmods.net

Wstawiam go na to forum aby pomóc poszukującym takich poradników w j. polskim.

Kolejnym powodem umieszczenia jest to iż opierałem sie na innych modach, lecz nie zawsze wszystko działało.

Zostało tutaj dodane kilka ciekawych funkcji które urozmaica troche ten podstawowy MOD.


"Postanowiłem wam pokazać jak stworzyć prosty exp MOD
Przed rozpoczęciem musisz się orjętować w średnim stopniu w scriptingu

Rejestrowanie Modułów

#include <amxmodx>
#include <amxmisc>
#include <nvault>


Definiujemy Maksymalną Liczbę Postaci
W obecnej postaci kodu mamy 5 postaci, natomiast może się tu znajdować dowolna liczba np: 2 lub 7

#define MAXCLASSES 5


Tworzymy Zmienne które będą odpowiadąły za zapisanie twojego poziomu klasy i doświadczenia

new PlayerXP[33],PlayerLevel[33],PlayerClass[33]
//to jest odpowiedzialne za przyznanie dodatkowego expa za zabicia
new XP_Kill,XP_Knife,XP_Hs,SaveXP
//To jest na potrzeby nVault, aby mógł zapisac twoje osiągnięcia
new g_vault

Tutaj mamy odwołanie do wcześniej zdefiniowanej maksymalnej ilości klas, Ibecne nazwy możemy zmienić na dowolne

new const CLASSES[MAXCLASSES][] = {
"None",
"Dog",
"Cat",
"Horse",
"Cow"
}

Tutaj jest 5 Postaci, ponieważ wcześniej zdefiniowaliśmy maksymalną liczbę = 5.


Teraz tworzymy Poziomy i to ile doświadczenia potrzeba, aby osiągnąc kolejny poziom.



new const LEVELS[7] = {
0,
100,//To określa ile doświadczenia potrzebujesz do danego poziomu
200,
400,
800,
1600,
3200
}

Teraz Tworzymy plugin_init()


public plugin_init()
{
register_plugin("XpMod", "1.0", "Fxfighter")

//Potrzebujemy tego do sprawdzenia twojego poziomu po tym jak kogoś zabijesz
register_event("DeathMsg", "eDeath", "a")
//Czy się zapisuje ??
SaveXP = register_cvar("SaveXP","1")
//Ile doświadczenia dostajesz za każde zabicie ?
XP_Kill=register_cvar("XP_per_kill", "20")
//Jeżeli komuś walniesz HS ile dostaniesz doświadczenia za ten wyczyn
XP_Hs=register_cvar("XP_hs_bonus","20")
//Tutaj jest ustawione doświadczenie za zabicie
XP_Knife=register_cvar("XP_knife_bonus","20")
//Właśnie wywołaliśmy nowe połączenie nvault
// Wywołaliśmy je jako animod
g_vault = nvault_open("animod")
// Rejestruje komendę odpowiedzialną za wywołanie i zmianę klasy
register_clcmd("say /class", "ChangeClass")
register_clcmd("say_team /class", "ChangeClass")
//Pokazuje ile masz doświadczenia
register_clcmd("say /xp", "ShowHud")
register_clcmd("say_team /xp", "ShowHud")
}

Teraz zabieramy sie do stworzenia funkcji Death . Pamiętacie jak zakomentowaliśmy "eDeath" w plugin_init()?Będzie Ona śledzić doświadczenie jeżeli zdobędziesz wyższy poziom.

public eDeath( ) //Nazwa Funkcji
{
// If the player's Class is nothing, then dont bother to do any of the below
if(PlayerClass[attacker] == 0)
return PLUGIN_CONTINUE

// Tworzy zmienną do przechowywania informacji o ID atakującego
new attacker = read_data( 1 )
// Stworzyliśmy zmiennądo przechowywania informacji o zaatakowanym
// Jeżeli gracz został zabity
new iVictim = read_data( 2 )
// Jeżeli Gracz został zabity Hs'em, ta funkcja mu przyzna doświadczenie korzystając z cvaru Xp_Hs
new headshot = read_data( 3 )

// Jaka broń została użyta
new clip, ammo, weapon = get_user_weapon(attacker,clip,ammo);
PlayerXP[attacker] += get_pcvar_num(XP_Kill)
// Używamy xp_hs cvaru
// Sprawdza czy ofiara została zabita poprzez HS
if(headshot)
// Daj jemu / jej dodatkowe doświadczenie
PlayerXP[attacker] += get_pcvar_num(XP_Hs)
// Sprawdza czy ofiarazostała zabita nożem
if(weapon == CSW_KNIFE)
// Daj jemu / jej dodatkowe doświadczenie
PlayerXP[attacker] += get_pcvar_num(XP_Knife)
// Sprawdza czy gracz ma dostateczna liczbę doświadczenia do awanswania na anstępny poziom

while(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]])
{ // this will create the Congratulations message.
client_print(attacker, print_chat, "[Animal Mod] Gratulacje! Jestes masz teraz poziom %i %s!", PlayerLevel[attacker],CLASSES[PlayerClass[attacker]])
// Add his/her level
PlayerLevel[attacker] += 1
}
// Pokazuje graczowi jego poziom w HUD
ShowHud(attacker)

}


To jest funkcja odpowiadająca za wyświetlanie poziomu, doświadczenia i klasy gracza w HUD

public ShowHud(id)
{
set_hudmessage(255, 0, 0, 0.75, 0.01, 0, 6.0, 15.0)
show_hudmessage(id, "Poziom: %i^nDoswiadczenie: %i^nPostac: %s",PlayerLevel[id],PlayerXP[id],CLASSES[PlayerClass[id]])
}

Informacja: ^n Określa nową linię


Tutaj jest Menu.W nim jest możliwośc wyboru Zwierzątka jakim będziesz grać. Używa nowego systemu menu.Nie mam ochoty na dodawanie nowcyh funkcji do tego menu, here is the original tutorial on that


public ChangeClass(id)
{
new menu = menu_create("Class Menu" , "Class_Handle");
menu_additem(menu ,"Dog", "1" , 0);
menu_additem(menu ,"Cat", "2" , 0);
menu_additem(menu ,"Horse", "3" , 0);
menu_additem(menu ,"Cow", "4" , 0);
menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
menu_display(id , menu , 0);
return PLUGIN_CONTINUE;
}

public Class_Handle(id , menu , item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
}
new szCommand[6] , szName[64]; new access , callback;
menu_item_getinfo(menu , item , access , szCommand , 5 , szName , 63 , callback);
new i = str_to_num(szCommand)
if(PlayerClass[id] != i)
{
PlayerClass[id] = i client_print(id,print_chat,"You are now a %s",CLASSES[i])
}
else
{
client_print(id,print_chat,"You are alredy a %s",CLASSES[i])
}
menu_destroy(menu);
return PLUGIN_CONTINUE
}


To jest funkcja odpowiadająca za wywołanie odpowiednich działań gdy z serwerem łączy sie gracz


public client_connect(id)
{
// OTylko wtedy gdy zapis jest włączony
if(get_pcvar_num(SaveXP) == 1)
{
// Ładuje twoje dane GRACZA
LoadData(id)
}
}

To jest funkcja odpowiadająca za wywołanie odpowiednich działań gdy Gracz wychodzi z serwera

public client_disconnect(id)
{
// To się dzieje tylko gdy zapis jest włączony
if(get_pcvar_num(SaveXP) == 1)
{
// Zapiszmy danę
SaveData(id)
}
}

Teraz tworzymy funkcje odpowiedzialną za zapis danych


public SaveData(id)
{
// Wybierz Steam id gracza, potrzebujemy tego ponieważ w tym modzie zapis jest na SID
new AuthID[35] get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
// Co ma byc w animod pliku
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
// zapisuje dane
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}


Teraz tworzymy funkcje odpowiedzialną za ładowanie danych postaci


public LoadData(id)
{
new AuthID[35] get_user_authid(id,AuthID,34)
new vaultkey[64],vaultdata[256]
// szuka
format(vaultkey,63,"%s-Mod",AuthID)
format(vaultdata,255,"%i#%i#",PlayerXP[id],PlayerLevel[id])
// ładuje dane
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new playerxp[32], playerlevel[32]
parse(vaultdata, playerxp, 31, playerlevel, 31)
PlayerXP[id] = str_to_num(playerxp)
PlayerLevel[id] = str_to_num(playerlevel)
return PLUGIN_CONTINUE
}



I teraz możemy dodać to co chcemy bo mamy szkielet :D

Wszystkie komentarze zostały przetłumaczone na "Mój Język"
I są one tym co chciał nam przekazać właściciel TUTORIALA.

Jeżeli są jakieś błędy w nazewnictwie ect. najmocniej przepraszam.

Jeżeli złamałem tym tematem jakiś regulamin Proszę o Wyrozumiałą Karę :)

TUTEK NIE MÓJ !!

Oparte na New XP Mod tutorial - AlliedModders

Mam nadzieje że komuś się przyda :)
Jeżeli cos pominąłem w tłumaczeniu I'm so sory but I am Only Person.
Błędów nie popełnia tylko ten kto nic nie robi :)
Testowałem wszystko poza zapisem.... ::Ggiel::
  • +
  • -
  • 8


#424922 Plugin vip zombie 1.7.2 [naprawa]

Napisane przez ::Gogiel:: w 27.06.2012 10:21

Pewno za plagiat i podpis pod kogoś dziełem nie ma SMA nie ma jak pomóc

Na moje można zamknąc chyba ze dasz SMA
  • +
  • -
  • 1


#363279 Vip wersja 0.8

Napisane przez ::Gogiel:: w 12.02.2012 15:11

Co do napisu VIP w scoreboard nie działa :D

Zaraz spróbuję to naprawić :D

Dobra poprawiony scoreboard :D

Załączone pliki


  • +
  • -
  • 2


#363269 Vip wersja 0.8

Napisane przez ::Gogiel:: w 12.02.2012 14:44

Nie żebym się wymądrzał czy coś ale w pluginku Vip 0.9 broń krowa i shot są zbugowane

Wrzucam sma z poprawionym już kodem :)

Mały błąd i łatwy do przeoczenia :)

A i złą ilość amunicji też poprawiłem :D

Daję sma w załączniku sprawdzałem wszystko działa :)

Załączone pliki


  • +
  • -
  • 2