To tak jak byś napisał prace do szkoły a niej wgrał jej na pena.
Zmian dokonujesz w .sma ale żeby serwer zauważył te zmiany to trzeba przekompilować z formatu .sma na .amxx i dopiero ten plik wgrać na ftp serwera do folderu plugins.
To równanie zostało stworzone przy pomocy kodu LaTeX:
Edytor LaTeX online: CodeCogs.com/latex/eqneditor.php
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.
|
Napisane przez Toldi w 16.08.2022 17:34
Napisane przez Toldi w 07.07.2022 19:42
Napisane przez Toldi w 07.07.2022 19:33
Nie działa ani jedno ani drugie
W amxx list plugin jako odpalony, przy testowaniu ani nie dodaje expa, ani brak informacji o tym ze mogłoby dodać.
Cóż ta pierwsza wersja nie rozni sie prawie niczym od wersji Toldiego.. Sprawdz w jednym i drugim czy po wywaleniu warunku if(info == 1 && cod_get_user_level(i) < poziom) będzie poprawnie działać.
Przeanalizuj dokładnie warunki to znajdziesz błąd.
Dziwne bo nic nie wyskakuje, pomimo ze zmienione.
Być może koliduje z jakimś pluginem. Dodaj plugin na sama gore plugins.ini i sprawdź ewentualnie potem na sam dół.
Napisane przez Toldi w 07.07.2022 18:08
Napisane przez Toldi w 07.07.2022 16:45
Nie testowane.
#include <amxmodx> #include <fakemeta> #include <ColorChat> #include <codmod> new xp, lvl, status; new bool:Frag[33]; public plugin_init() { register_plugin("[COD] XP za smierc", "1.0", "Mi@po") register_event("DeathMsg", "DeathMsg", "ade"); register_logevent("RoundEnd", 2, "1=Round_End") register_clcmd("kill", "BlockCommand"); // blokuje komende kill xp = register_cvar("cod_xpzasmierc", "10"); lvl = register_cvar("cod_xpzasmierc_odlvl", "10"); status = register_cvar("cod_xpzasmierc_status", "2"); } public BlockCommand() return PLUGIN_HANDLED; public RoundEnd() { new reward = get_pcvar_num(xp); for(new i = 1; i <= 32; i++) { if(!is_user_connected(i)) continue; if(!Frag[i]) { cod_set_user_xp(i, cod_get_user_xp(i) + reward); // daj exp gdy nikogo nie zabil ColorChat(i, GREEN, "[COD:MW]^1 Dostales^4 %d XP^1 za smierc nie zabijajac przy tym nikogo!", reward); } else Frag[i] = false; // potrzebne zeby w nastepnej rundzie mogl dostac exp za brak fragow. } } public DeathMsg() { new kid = read_data(1); new vid = read_data(2); if(!is_user_connected(kid) || kid == vid) return PLUGIN_CONTINUE; Frag[kid] = true; return PLUGIN_CONTINUE; }
Napisane przez Toldi w 25.06.2022 15:55
Witam edytowałem sobie plugin od grawitacji z tego tematu: https://amxx.pl/topi...em-low-gravity/dodałem możliwość zakupu w następnej rundzie, bo wcześniej nie można było kupować ani po wzięciu antidotum, jeżeli kupiliśmy przed zarażeniem, a potem wzięliśmy anti i znowu chcieliśmy kupić, to pisało że już kupiliśmy..
Mam takie pytanie, czy to jest dobrze zrobione ? Mógłby ktoś zerknąć ?
Źle.
Napisane przez Toldi w 28.05.2022 16:22
Tu masz tylko natyw sprawdzający czy włączone czy nie, żeby wyłączać musisz zrobić forward do public m
A no i masz błąd, mówisz że skiny dla vipa, przy wyłączaniu sprawdza flagę ale przy autoryzacji nie więc każdy ma skinyJaki forward??
Zrób tak w silniku:
public plugin_natives() { register_native("get_user_status_models", "_zwroc_status_modeli_gracza", 1); register_native("set_user_status_models", "_ustaw_status_modeli_gracza", 1); } public bool:_zwroc_status_modeli_gracza(index) return modele[index] ? true : false; public _ustaw_status_modeli_gracza(index, bool:wartosc) { modele[index]=wartosc; return 1; }A tu przykładowy plugin pisany na szybko (i nie testowany) dla objaśnienia działania:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" native get_user_status_models(index); native set_user_status_models(index, bool:wartosc); public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /menu", "MenuModeli"); } public MenuModeli(id) { new menu = menu_create("Menu Modeli", "_MenuModeli"); new nazwa[64]; formatex(nazwa, charsmax(nazwa), "Modele: %s", get_user_status_models(id) ? "\yWlaczone" : "\rWylaczone"); menu_additem(menu, nazwa); menu_setprop(menu, MPROP_EXITNAME, "Wyjscie"); menu_display(id, menu); return PLUGIN_CONTINUE; } public _MenuModeli(id, menu ,item) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } if(get_user_status_models(id)) set_user_status_models(id, false); // Mam włączone modele wiec je teraz wyłączam else set_user_status_models(id, true); // A teraz włączam client_print(id, print_chat, "Modele: %s", get_user_status_models(id) ? "Wlaczone" : "Wylaczone"); menu_destroy(menu); return PLUGIN_CONTINUE; }
Po co se zycie utrudniasz i przedluzasz id na index
Miałem nie odpisywać bo nic ten post nie wniesie do tego tematu ale co tam lubię życie na krawędzi. Odpowiedź to: lubię mieć w życiu pod górkę.
Napisane przez Toldi w 27.05.2022 16:04
Tu masz tylko natyw sprawdzający czy włączone czy nie, żeby wyłączać musisz zrobić forward do public m
A no i masz błąd, mówisz że skiny dla vipa, przy wyłączaniu sprawdza flagę ale przy autoryzacji nie więc każdy ma skiny
Jaki forward??
Zrób tak w silniku:
public plugin_natives() { register_native("get_user_status_models", "_zwroc_status_modeli_gracza", 1); register_native("set_user_status_models", "_ustaw_status_modeli_gracza", 1); } public bool:_zwroc_status_modeli_gracza(index) return modele[index] ? true : false; public _ustaw_status_modeli_gracza(index, bool:wartosc) { modele[index]=wartosc; return 1; }
A tu przykładowy plugin pisany na szybko (i nie testowany) dla objaśnienia działania:
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author" native get_user_status_models(index); native set_user_status_models(index, bool:wartosc); public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /menu", "MenuModeli"); } public MenuModeli(id) { new menu = menu_create("Menu Modeli", "_MenuModeli"); new nazwa[64]; formatex(nazwa, charsmax(nazwa), "Modele: %s", get_user_status_models(id) ? "\yWlaczone" : "\rWylaczone"); menu_additem(menu, nazwa); menu_setprop(menu, MPROP_EXITNAME, "Wyjscie"); menu_display(id, menu); return PLUGIN_CONTINUE; } public _MenuModeli(id, menu ,item) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } if(get_user_status_models(id)) set_user_status_models(id, false); // Mam włączone modele wiec je teraz wyłączam else set_user_status_models(id, true); // A teraz włączam client_print(id, print_chat, "Modele: %s", get_user_status_models(id) ? "Wlaczone" : "Wylaczone"); menu_destroy(menu); return PLUGIN_CONTINUE; }
Napisane przez Toldi w 01.05.2022 09:20
Napisane przez Toldi w 18.03.2021 13:41
Po co 2 raz pobierasz nazwę rangi skoro już ją pobrałeś wcześniej
Napisane przez Toldi w 17.03.2021 11:57
Piszę tu zamiast na pw bo innym może się przydać. Poprawiony kod.
public _get_user_rangName(id_rangi, szTable[], iLen) { param_convert(2); if(id_rangi < 0){ return -1; } copy(szTable, iLen, ranga[id_rangi]); return 1; }
Dodatkowo sam plugin od rang MUSI być włączony i najlepiej usuń/wyłącz sb w nim hud skoro chcesz rangę wyświetlać w pluginie od skinów.
Napisane przez Toldi w 16.03.2021 13:20
public plugin_natives() { register_native("get_user_rangId", "_get_user_rangId", 1) }
public _get_user_rangId(index) { return ranga[ranganum[index]] }
W pluginie od skinow nad plugin_init dodaj
native get_user_rangId(index); native get_user_rangName(id_rangi, szTable[], iLen) public plugin_init() { ... }
To co podałeś zwraca tylko id rangi gracza. Musisz jeszcze pobrać nazwę tej rangi bo skąd ten plugin ma wiedzieć jakie rangi masz w tym pierwszym pluginie.
Więc tworzysz nowy natyw
register_native("get_user_rangName", "_get_user_rangName", 1)
a niżej funkcja:
public _get_user_rangName(id_rangi, szTable[], iLen) { param_convert(2); if(id_rangi < 0){ return -1; } copy(szTable, iLen, ranga[ranganum[id]]); return 1; }
Sprawdź czy działa bo pisałem na szybkiego. Jak coś po robocie poprawie.
W hud:
new rangName[32], rangId = get_user_rangId(target) get_user_rangName(rangId, rangName, charsmax(rangName));
Napisane przez Toldi w 22.02.2021 17:39
Napisane przez Toldi w 31.01.2021 11:26
Nie mogę edytować posta bo wystepuje jakis problem z bazą to tutaj zapytam a najwyżej niech administacja usunie po otrzymaniu odpowiedzi to czy skiny powinny się zapisywać po wyjsciu z serwera i wejsciu? Bo mi zmienia skina na domyslny.
Czytałeś opis na 1 stronie??? Zapisują się po wyjściu a na wejściu wczytują. Sprawdź czy wogóle. plugin połączył się z baza danych.
Napisane przez Toldi w 24.01.2021 12:42
Od toldiego nie działa, dwa prefixy są. Od fakena jest ok
Działać działa tyle że na szybkiego sprawdzałem i zrozumiałem że gracz z imunitetem i vipem ma mieć 2 prefixy. Niżej bardziej optymalna kod od tego wyżej.
public handleSayText(msgId,msgDest,msgEnt){ new id = get_msg_arg_int(1); if(is_user_connected(id) && g_Vip[id]) { new szTmp[192], szTmp2[192], szPrefix[64]; get_msg_arg_string(2, szTmp, charsmax(szTmp)); formatex(szPrefix, charsmax(szPrefix), "^x04%s", (get_user_flags(id) & ADMIN_IMMUNITY) ? "[ADMIN] ": "[VIP]"); if(!equal(szTmp,"#Cstrike_Chat_All")){ add(szTmp2, charsmax(szTmp2), "^x01"); add(szTmp2, charsmax(szTmp2), szPrefix); add(szTmp2, charsmax(szTmp2), " "); add(szTmp2, charsmax(szTmp2), szTmp); } else{ new szPlayerName[64]; get_user_name(id, szPlayerName, charsmax(szPlayerName)); get_msg_arg_string(4, szTmp, charsmax(szTmp)); //4. argument zawiera treść wysłanej wiadomości set_msg_arg_string(4, ""); //Musimy go wyzerować, gdyż gra wykorzysta wiadomość podwójnie co może skutkować crash'em 191+ znaków. add(szTmp2, charsmax(szTmp2), "^x01"); add(szTmp2, charsmax(szTmp2), szPrefix); add(szTmp2, charsmax(szTmp2), "^x03 "); add(szTmp2, charsmax(szTmp2), szPlayerName); add(szTmp2, charsmax(szTmp2), "^x01 : "); add(szTmp2, charsmax(szTmp2), szTmp) } set_msg_arg_string(2, szTmp2); } return PLUGIN_CONTINUE; }