←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Wpisanie do zmiennej wartości podanej prze...

  • +
  • -
K!113r's Photo K!113r 15.03.2012

Więc przejdźmy do meritum sprawy:
widziałem w amxbans że można samemu wpisywać dane, oczywiście wyskakuje nam linijka tekstu no i musimy coś wpisać (albo nie musimy :P) i chciałem się dowiedzieć jak otrzymać taki efekt i czy można tym nadać wartość zmiennej. Nie jest mi ta odpowiedź potrzebna na już, ale przyda mi się w przyszłości.
Quote

  • +
  • -
^Grzyboo's Photo ^Grzyboo 15.03.2012

Przeanalizuj sobie:



#include <amxmodx>
#include <amxmisc>

new gZmiennaGracza[33];

public plugin_init()
{
register_plugin("NewPlugin", "v1.01", "Grzyboo");

register_clcmd("WprowadzLiczbe", "HandleWprowadz", -1);
}

public FunkcjaNaWpisywanie(id)
{
client_cmd(id, "messagemode WprowadzLiczbe");
}

public HandleWprowadz(id)
{
static arg[6];
read_argv(1, arg, 5);

if ( !strlen(arg) )
{
client_print(id, print_chat, "Nie moze zostac puste!");
client_cmd(id, "messagemode WprowadzLiczbe");
return PLUGIN_HANDLED;
}
gZmiennaGracza[id] = str_to_num(arg);

return PLUGIN_HANDLED;
}

Edited by ^Grzyboo, 15.03.2012 21:52.
Quote

  • +
  • -
ogieR8's Photo ogieR8 18.03.2012

gZmiennaGracza[id] = str_to_num(arg);

A nie czasem ?
copy(gZmiennaGracza[id], 128, arg);



Tak mi kiedyś napisał maslo
str_to_num to jest tekst do liczby, a ty masz tekst do tekstu więc musisz użyć copy.

Bo robiłem sobie zapisanie hasła, jakie się wpisuje w messagemode do zmiennej z użyciem właśnie jak Ty str_to_num i takiej porady zadał mi maslo i od tego momentu smiga świetnie ;)
Edited by ogieR-, 18.03.2012 15:47.
Quote

  • +
  • -
DarkGL's Photo DarkGL 18.03.2012

spójrz w kod to zobaczysz "WprowadzLiczbe" dlatego jest str_to_num
Quote

  • +
  • -
ogieR8's Photo ogieR8 18.03.2012

No widzę, ale myślałem, że on od tak sobie to nazwał. A co jak gracz wpisze np jakiś tekst ? Wtedy nie wyświetli go, czy cała zmienna będzie bez danych ? ; /
Quote

  • +
  • -
DarkGL's Photo DarkGL 18.03.2012

jak wprowadzi tekst to zmienna przyjmie wartość 0
skoro prosiliśmy gracza o liczby to oczekujemy liczb nie tekstu jak nie ma liczb to jest 0
jakbyśmy prosili o podanie tekstu to wtedy twój kod jest ok ( w sumie i tak jest ok ale my chcemy mieć liczbę a nie tekst :P )
Quote

  • +
  • -
ogieR8's Photo ogieR8 19.03.2012

Czyli na upartego można użyć i jego i mój, ale pod 2 kwestie :
1 moje jest uniwersalne
2 jego jest jakby z takim.. zabezpieczeniem, że jeśli w liczbach pojawi się litera etc to zmienna przyjmie wartość 0

Dobrze rozumiem to ?
Quote

  • +
  • -
sebul's Photo sebul 19.03.2012

Dobrze rozumiem to ?

Nie, Twoim sposobem do tablicy wpiszesz jakiś ciąg znaków, a nie jakąś cyfrę. A jeszcze inaczej, "1" to nie to samo co 1.
Quote

mierzwi's Photo mierzwi 22.03.2012

jeszcze dla pewności możesz użyć stocka i sprawdzić czy to liczba
bool:IsStrFloat(string[])
{
    new len = strlen(string);
    for ( new i = 0; i < len; i++ )
    {
        switch ( string[i] )
        {
            case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', '-':    continue;
            default:                            return false;
        }
    }
    
    return true;
}
Quote