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
 

mlekovita - zdjęcie

mlekovita

Rejestracja: 13.11.2016
Aktualnie: Nieaktywny
Poza forum Ostatnio: 07.02.2023 12:55
-----

#776204 Nauka Javy

Napisane przez dasiek w 27.01.2023 22:59

Bierzesz pierwszą lepszą książkę związaną z podstawami Javy - podstawy to chwila moment, skoro już się frontem bawiłeś, to tak naprawdę przyswojenie podstaw to uno momento, zmienne, pętle, bla bla bla (jeśli nie korzystałeś z typescriptu może być "ciężej" - głównie z definicjami typów). Od siebie polecę, żebyś zwracał uwagę głównie na OOP, java jest mocno na to nastawiona i praktycznie wszystko co praktycznie masz zamiar robić będzie związane z Tworzeniem abstrakcyjnych klas, interfejsów itp. (samo "hello world" już to pokazuje - musisz mieć klasę startową z publiczną statyczną funkcją main). 
Potem będzie "już tylko gorzej":

  • o Swingu nie mówię, bo to bardziej ciekawostka
  • Mobilki? Android to lubi, jest fajnie, chociaż od pewnego czasu oficjalnym językiem do androida jest Kotlin, taka "pochodna javy" 
  • "Coś bardziej praktycznego pożądanego w branży" - JAVA EE i/lub https://spring.io/ - do Tworzenia backendu w javie.

GL


  • +
  • -
  • 3


#775545 Asynchroniczne zapytania do bazy danych, a nowe połączenia

Napisane przez Deus Vult w 29.11.2022 19:46

Nie bardzo rozumiem, albo Ty nie rozumiesz mnie.
Chcesz mi powiedzieć, że inna wersja modułu sqlx działa inaczej? W sensie, thread_query nie nawiązuje nowego połączenia za każdym razem?

Chciałem ci powiedzieć, że nie każda wersja modułu jest kompatybilna ze wszystkimi wersjami silnika


  • +
  • -
  • 1


#775850 Zrozumieć istotę tablic - wstęp

Napisane przez Deus Vult w 29.12.2022 22:34

 

 

new arr[2]; // Inicjacja tablicy o rozmiarze 2.

arr[0] = 5; // Przypisywanie wartosci '5' do indeksu '0' tablicy 'arr'.
arr[1] = 6; // Przypisywanie wartosci '6' do indeksu '1' tablicy 'arr'.

Dla tych niekumatych:
Jeżeli masz dużą zmywarkę i masz 3 szuflady na naczynia

arr[0] = 5    // do szuflady pierwszej wlozy 5 talerzy
arr[1] = 6   // do szuflady nastepnej wlozy 6 szklanek

 

Będą one siedziały w tej zmywarce dopóki jej nie opróżnisz


  • +
  • -
  • 1


#775640 wuha.pro - nowy projekt CS 1.6 & CS:GO

Napisane przez Deus Vult w 11.12.2022 02:35

epoki ci sie pojebały xD


  • +
  • -
  • 2


#774404 Jakaś funkcja do sprawdzania daty?

Napisane przez Rivit w 10.07.2022 10:17

nie musi, przeciez tam okreslasz format w ktorym została podana data


  • +
  • -
  • 1


#774406 Jakaś funkcja do sprawdzania daty?

Napisane przez Robiin w 10.07.2022 12:53

Nigdy nie powinno się zapisywać do bazy danych sformatowanej daty - jest to niewygodne i nikomu nie służy (a w mysqlu nawet przeszkadza, bo wydaje mi się, że nie da się wtedy użyć tej wartości jako timestamp). Dlatego od razu zmień to na zapis unixowy.

Do sprawdzenia aktualnego czasu na serwerze użyj funkcji get_systime.

Później formatowanie to kwestia użycia np. funkcji z tegotematu.


  • +
  • -
  • 2


#774391 Jakaś funkcja do sprawdzania daty?

Napisane przez Rivit w 09.07.2022 08:38

strtok

parse_time

time

 

Generalnie jak planujesz polegać na czasie to polecam unix timestamp, który nie podlega przesunięciom wynikających ze stref czasowych.


  • +
  • -
  • 1


#774336 EXP dla gracza jeśli padnie, a nie zabije

Napisane przez Deus Vult w 06.07.2022 21:20


#include <amxmodx>
#include <fakemeta>
#include <ColorChat>
#include <codmod>

new xp, lvl, status;

public plugin_init() {
    register_plugin("[COD] XP za smierc", "1.0", "Mi@po")
    register_event("DeathMsg", "Death", "a");
    xp = register_cvar("cod_xpzasmierc", "10");
    lvl = register_cvar("cod_xpzasmierc_odlvl", "10");
    status = register_cvar("cod_xpzasmierc_status", "2");
}
 
public Death()
{
    new killer = read_data(1);
    new victim = read_data(2);
    new reward = get_pcvar_num(xp);
    new poziom = get_pcvar_num(lvl);
    new info = get_pcvar_num(status);

    if(!is_user_alive(victim) || killer == 0 || killer == victim) return; // jesli zabojca zabije samego siebie to funkcja zostaje zatrzymana

    if(info == 1 && cod_get_user_level(killer) < poziom)
    {
        cod_set_user_xp(killer, cod_get_user_xp(killer) + reward); // doda graczowi XP jezeli zabil kogos
        ColorChat(killer, GREEN, "[COD:MW]^x01 Dostales^x04 %d XP^x01 za smierc!", reward);
    }

    return PLUGIN_CONTINUE;
}

 


  • +
  • -
  • 2


#774338 EXP dla gracza jeśli padnie, a nie zabije

Napisane przez Deus Vult w 06.07.2022 22:01


Tylko, że mi chodziło o to, że ma dodać XP jeśli zabije, tylko jeśli nie zabije 

 

Nie rozumiem tego w ogóle.

 

 

 


Mamy warninga i erorka
zamień to:

if(!is_user_alive(victim) || killer == 0 || killer == victim) return;

na to:

if(!is_user_alive(victim) || killer == 0 || killer == victim) return PLUGIN_CONTINUE;

  • +
  • -
  • 2


#774352 EXP dla gracza jeśli padnie, a nie zabije

Napisane przez Deus Vult w 07.07.2022 16:33

nie testowane
tu masz efekt po skonczeniu rundy
 

#include <amxmodx>
#include <fakemeta>
#include <ColorChat>
#include <codmod>

new xp, lvl, status, bool:playerkilled[33];

public plugin_init() {
    register_plugin("[COD] XP za smierc", "1.0", "Mi@po / Deva")
    register_event("DeathMsg", "Death", "a");
    register_logevent("RoundEnd", 2, "1=Round_End");
    xp = register_cvar("cod_xpzasmierc", "10");
    lvl = register_cvar("cod_xpzasmierc_odlvl", "10");
    status = register_cvar("cod_xpzasmierc_status", "2");
}
 
public Death()
{
    new killer = read_data(1);
    new victim = read_data(2);

    if(!is_user_alive(victim) || killer == 0 || killer == victim) return PLUGIN_CONTINUE; // jesli zabojca zabije samego siebie to funkcja zostaje zatrzymana

   playerkilled[killer] = true;

    return PLUGIN_CONTINUE;
}

public RoundEnd()
{
    new reward = get_pcvar_num(xp);
    new poziom = get_pcvar_num(lvl);
    new info = get_pcvar_num(status);
    
    for(new i=1; i<=32; i++)
    {
        if(!is_user_connected(i)) continue;

        if(!playerkilled[i])
        {
            if(info == 1 && cod_get_user_level(i) < poziom)
            {
                cod_set_user_xp(i, cod_get_user_xp(i) + reward); // doda graczowi XP jezeli nikogo nie zabil
                ColorChat(i, GREEN, "[COD:MW]^x01 Dostales^x04 %d XP^x01 za smierc!", reward);
            }
            playerkilled[i] = false;
        }
    }
}

a tu masz wersje po śmierci

 

#include <amxmodx>
#include <fakemeta>
#include <ColorChat>
#include <codmod>

new xp, lvl, status, bool:playerkilled[33];

public plugin_init() {
    register_plugin("[COD] XP za smierc", "1.0", "Mi@po / Deva")
    register_event("DeathMsg", "Death", "a");
    xp = register_cvar("cod_xpzasmierc", "10");
    lvl = register_cvar("cod_xpzasmierc_odlvl", "10");
    status = register_cvar("cod_xpzasmierc_status", "2");
}
 
public Death()
{
    new killer = read_data(1);
    new victim = read_data(2);
    new reward = get_pcvar_num(xp);
    new poziom = get_pcvar_num(lvl);
    new info = get_pcvar_num(status);

    if(!is_user_alive(victim) || killer == 0 || killer == victim) return PLUGIN_CONTINUE; // jesli zabojca zabije samego siebie to funkcja zostaje zatrzymana

   playerkilled[killer] = true;

   if(!playerkilled[victim])
   {
        if(info == 1 && cod_get_user_level(victim) < poziom)
        {
            cod_set_user_xp(victim, cod_get_user_xp(victim) + reward); // doda graczowi XP jezeli nikogo nie zabil
            ColorChat(victim, GREEN, "[COD:MW]^x01 Dostales^x04 %d XP^x01 za smierc!", reward);
        }
        playerkilled[victim] = false;
   }

    return PLUGIN_CONTINUE;
}

  • +
  • -
  • 2


#774363 EXP dla gracza jeśli padnie, a nie zabije

Napisane przez Deus Vult w 07.07.2022 19:41

Ani góra, ani dół nie pomaga. Również dodałem w plugins.ini nie w plugins-codmod.ini. (Plugin w dwóch przypadkach jest running)

Brak efektu, najbliżej jest devastator z brakiem EXP'a bo nie działa wcale  ^D^  ^D^  Ale jednak chciałbym, aby działało.

Najwidoczniej będę musiał być uszczęśliwiony tym, że działa a może osobnym pluginem zablokować kill

Przeanalizowałem skrypt jeszcze raz i był błąd w warunku pierwszym.. Sprawdź teraz

i do tego zmień sobie cvar status na 1 żeby ci pokazywało wiadomość i lvl, i przy testowaniu upewnij się ze lvl jest mniejszy niż wymagany w pluginie
 

#include <amxmodx>
#include <fakemeta>
#include <ColorChat>
#include <codmod>

new xp, lvl, status, bool:playerkilled[33];

public plugin_init() {
    register_plugin("[COD] XP za smierc", "1.0", "Mi@po / Deva")
    register_event("DeathMsg", "Death", "a");
    xp = register_cvar("cod_xpzasmierc", "10");
    lvl = register_cvar("cod_xpzasmierc_odlvl", "10");
    status = register_cvar("cod_xpzasmierc_status", "2");
}
 
public Death()
{
    new killer = read_data(1);
    new victim = read_data(2);
    new reward = get_pcvar_num(xp);
    new poziom = get_pcvar_num(lvl);
    new info = get_pcvar_num(status);

    if(is_user_alive(victim) || killer == 0 || killer == victim) return PLUGIN_CONTINUE; // jesli zabojca zabije samego siebie to funkcja zostaje zatrzymana

   playerkilled[killer] = true;

   if(!playerkilled[victim])
   {
        if(info == 1 && cod_get_user_level(victim) < poziom)
        {
            cod_set_user_xp(victim, cod_get_user_xp(victim) + reward); // doda graczowi XP jezeli nikogo nie zabil
            ColorChat(victim, GREEN, "[COD:MW]^x01 Dostales^x04 %d XP^x01 za smierc!", reward);
        }
        playerkilled[victim] = false;
   }

    return PLUGIN_CONTINUE;
}

  • +
  • -
  • 2


#774238 DMG / damagebits HE

Napisane przez Robiin w 23.06.2022 10:46

Dam Ci wędkę.
 
log_amx lub client_print pozwolą Ci na printowanie kolejno w konsoli lub czacie. W momencie zadania dmg wyprintuj sobie damage, damagebits i bron.
Wtedy zostaje Ci tylko logiczne rozwiązanie problemu naliczania dmg dla złej broni - bo już wiesz jakie wartości ma każda ze zmiennych i możesz sobie manualnie przejść przez kod podkładając pod zmienne konkretne liczby.
 
Sidenotes:

  • Nazwy zmiennych zmien na angielski, to samo tyczy się 'data' (tutaj też przydałoby się jakiejś konwencji nazw użyć, Ja osobiście enumy robię UPPER_SNAKE_CASE, a pola z przedrostkiem nazwy, czyli dla enuma WEAPONS_DATA pola nazywałyby się WD_GRENADE i WD_AWP) 
  • Pierwsza wartość enum domyślnie przyjmuje 0, więc nie musisz jej ręcznie ustawiać
  • Dwa ify możesz zmienić na switcha, żeby schludniej wyglądało
  • Dwa ify na początku (alive i team) możesz połączyć, dla lepszej przejrzystości
  • Nie nazywaj tego "skryptem", tylko skryptem. To jest skrypt.

 

Lektura: https://forums.allie...18&postcount=71

 

Edit: Mniej więcej tak powinien wyglądać kod, według moich wytycznych. Możliwe też, że rozwiązałem Twój problem, ale niczego nie testowałem więc sam popróbuj.

Spoiler

  • +
  • -
  • 1


#774230 Otwieranie drzwi

Napisane przez Rivit w 21.06.2022 12:49

gButtons to tablica liczb całkowitych, wyświetlaj jej elementy poprzez "%d".

 

 


Zaden warunek nie przechodzi jedynie jak wywale caly if

 

No ale w ifie masz trzy warunki, zobacz, który z nich jest fałszem, możesz to zrobić też przez client_print, coś na wzór takiego:

client_print(...., "%d", !pev_valid(g_iButtons[i]))

  • +
  • -
  • 1


#774208 Aktualizowanie zmiennej po zmianie druzyny

Napisane przez Anonymuss w 18.06.2022 18:51

#include <amxmodx>

new jakas_zmienna[33];

public plugin_init()
{
	register_plugin("test", "1.0", "Anonymuss");
	
	register_event("TeamInfo", "ev_TeamInfo", "a", "2=TERRORIST", "2=CT", "2=SPECTATOR");
	
	register_clcmd("say /test", "test");
}

public test(id)
{
	client_print_color(id, id, "Zmienna: %i", jakas_zmienna[id]);
	return PLUGIN_HANDLED;
}

public ev_TeamInfo()
{
	new id = read_data(1);
	new TeamName[2];
	read_data(2, TeamName, charsmax(TeamName));
	
	switch(TeamName[0])
	{
		case 'T': jakas_zmienna[id] = 1;
		case 'C': jakas_zmienna[id] = 2;
		case 'S': jakas_zmienna[id] = 3;
	}
}

  • +
  • -
  • 1


#773943 Przekazanie ze Stocka wszystkich stringów

Napisane przez Robiin w 20.05.2022 17:39

Sortowanie struktury:
 

Spoiler

 
Co daje nam:
Spoiler

  • +
  • -
  • 3