[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 83 из 126«128182838485125126»
Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder и заказы (Вы можете получить ответы на вопросы по SB и сделать заказ)
Вопросы по скриптингу Sanny Builder и заказы
wmysterio
Администраторы
Скриптер
22.11.11 21:52
Online
Если у вас возник вопрос по скриптингу Sanny Builder, обращайтесь! Мы постараемся решить вашу проблему wink Это ещё не значит, что все прям бросятся решать во чтобы то не стало, но ответ вы сможете вы получить как вариант решения или как невозможность или сложность решения.
УВАЖАЕМЫЕ ПОЛЬЗОВАТЕЛИ! ПРОСЬБА КОД СКРИПТОВ ПОМЕЩАТЬ В КОНСТРУКЦИЮ КОДА:

или

Также указывайте полный код скрипта, иначе причина ошибок может быть и не выявлена.

Внимание! От этого момента тема предназначена ещё и для заказов скриптов и миссий. Я это сделал по одной причине - пользователи постоянно путают/или не ищут темы и приводят заказ здесь. Теперь этой путаницы не будет. Здесь можно проводить заказы, но Вы должны указать в начале поста текст "НА ЗАКАЗ". Постарайтесь как можно детальнее объяснить суть скрипта.
Прикрепления: 0248203.png(1Kb) · 9085525.png(0Kb)

Slivkin-Sergey
Модераторы
17.11.13 16:38
Offline
wmysterio, а где тебе это сказали?

И ещё почему-то не могу вернуть ничего кроме int, вылет неизбежен.
Код
#include <iostream>
#include <string>
extern "C" __declspec(dllexport) float getLocator(int locHandle){
if(locHandle == 1){
return 1.1;
}else{
return 1.5;
}
}

Вот эта функция, например, вызывает вылет.
Отредактировал Slivkin-Sergey - Воскресенье, 17.11.13, 16:38

wmysterio
Администраторы
Скриптер
17.11.13 16:43
Online
Цитата Slivkin-Sergey ()
И ещё почему-то не могу вернуть ничего кроме int, вылет неизбежен.
С такими вопросами обращайся к DK22Pac. Он лучше тебе расскажет эту тему.

Vital
Друзья
Скриптер
18.11.13 19:24
Offline
sergey4990, я с этим плагином не работал, посмотри там видео, должно быть объяснено, что делать.
2109: create_special_actor $VITAL in_front_of_computer

DK22Pac
Друзья
TOP Скриптер
18.11.13 19:56
Offline
Slivkin-Sergey, результат в виде числа с плавающей точкой надо "получать" самостоятельно:
Код
0AA5: call 2@ num_params 1 pop 1 10
0AE9: pop_float 3@ //  // результат запишется в 3@

Или можно попробовать передавать результат через указатель:
Код
void getLocator(int locHandle, float *pResult)
{
         if(locHandle == 1)
             *pResult = 1.1;
         else
             *pResult = 1.5;
}

Код
0AA5: call 2@ num_params 2 pop 2 10 pResult 3@v // результат запишется в 3@
Отредактировал DK22Pac - Понедельник, 18.11.13, 20:12

sergey4990
Пользователи
19.11.13 16:06
Offline
оружие добавлять я научился, но есть одна проблемка. этим оружием нельзя сделать хедшот или взорвать бак машины
как можно это исправить?

и еще вопрос, есть ли такой плагин для добавления новых машин?

Slivkin-Sergey
Модераторы
19.11.13 19:28
Offline
DK22Pac,
Код
{$CLEO}
0000:
:P3D_1
wait 0
if
0AA2: 1@ = load_library "CLEO\lalala.dll" // IF and SET  
jf @P3D_1
if
0AA4: 2@ = get_proc_address "getLocator" library 1@ // IF and SET  
jf @P3D_1
0AA5: call 2@ num_params 2 pop 2 10 pResult 3@ // результат запишется в 3@
0AA3: free_library 1@
0A93:


Код
#include <iostream>  
  #include <string>  
  using namespace std;  
  extern "C" __declspec(dllexport)
void getLocator(int locHandle, float *pResult)
  {  
          if(locHandle == 1)  
              *pResult = 1.1;  
          else  
              *pResult = 1.5;  
  }


Всё равно вылетает...

DK22Pac
Друзья
TOP Скриптер
19.11.13 20:36
Offline
Slivkin-Sergey, здесь ты передаешь в функцию параметр 3@, т.е., в данном примере - число 0 (все локальные переменные скрипта при старте его работы устанавливаются в 0). Надо передавать указатель на переменную 3@, а не её значение. Особенность CLEO4 позволяет передавать указатель на переменную в функцию, представляя её (переменную) в виде строки:
Код
3@v
Отредактировал DK22Pac - Вторник, 19.11.13, 20:39

Slivkin-Sergey
Модераторы
20.11.13 05:03
Offline
С указателем тоже вылетает wacko ...

DK22Pac
Друзья
TOP Скриптер
20.11.13 05:32
Offline
Да, есть ещё одна ошибка. Параметры для функций в опкодах 0AA5-0AA8 надо передавать в обратном порядке, т.е. "справа-налево".
Код
0AA5: call 2@ num_params 2 pop 2 pResult 3@v 10
Отредактировал DK22Pac - Среда, 20.11.13, 05:32

Slivkin-Sergey
Модераторы
20.11.13 19:05
Offline
Да, отлично, теперь работает! Спасибо, есть ещё пара вопросов:

1) Как передать в функцию стринговое значение?
2) Как сделать из 3@v обычную float?

BoPoH
Друзья
20.11.13 22:45
Offline
Цитата Slivkin-Sergey ()
Как передать в функцию стринговое значение?

Используй так же 3@v, записывая в неё текст. Не забудь, что сама функция должна принимать указатель на текст (т.е. char*).
Цитата Slivkin-Sergey ()
Как сделать из 3@v обычную float?

Никак smile 3@ - и есть та переменная float. Ты передаёшь в функцию указатель на переменную 3@ при помощи записи в виде 3@v. Это значит, что твоя функция примет этот указатель и запишет по адресу, на который он указывает, нужное значение. В данном случае, 3@v указывает на 3@.
Довольно запутанно, конечно, если ты понятия не имеешь об указателях в программировании.

Slivkin-Sergey
Модераторы
21.11.13 18:44
Offline
Цитата BoPoH ()
3@ - и есть та переменная float. Ты передаёшь в функцию указатель на переменную 3@ при помощи записи в виде 3@v. Это значит, что твоя функция примет этот указатель и запишет по адресу, на который он указывает, нужное значение. В данном случае, 3@v указывает на 3@. Довольно запутанно, конечно, если ты понятия не имеешь об указателях в программировании.

Т.е. я могу вместо 3@v использовать 3@?
Цитата BoPoH ()
Используй так же 3@v, записывая в неё текст. Не забудь, что сама функция должна принимать указатель на текст (т.е. char*).

А почему *char, а не *string, или что нибудь в этом роде? И какой синтаксис? *charLocator?

Drs36
Проверенные
21.11.13 22:38
Offline
Здравствуйте,как сделать все школы доступными с самого начала игры и как можно чтобы в начале звонил телефон(Миссии)

BoPoH
Друзья
21.11.13 23:23
Offline
Цитата Slivkin-Sergey ()
Т.е. я могу вместо 3@v использовать 3@?

Смотря в какой ситуации. 3@v - это указатель на переменную 3@.

Цитата Slivkin-Sergey ()
А почему *char, а не *string, или что нибудь в этом роде? И какой синтаксис? *charLocator?

Во-первых, не *char, а char* (звёздочка после типа).
Во-вторых, я не знаю, как работает тип string, и что он из себя представляет. Обычно используют char* в случаях работы с текстом. Особенно, если это плагин для СА. Почитай про работу со строками в C++ (именно с char и char*). И про указатели, желательно, тоже почитать.

Я могу по-простому объяснить, что такое указатель.
Представь, что тебе нужно отправить письмо другу. Ты не хочешь сам идти к другу, чтобы передать ему письмо, но у тебя есть его адрес. Предположим, что дом твоего друга - это переменная. А адрес его дома - указатель. Ты даёшь письмо посыльному (предположим, что посыльный - твоя функция) и говоришь ему адрес дома друга (передаёшь указатель на переменную в функцию). Посыльный приходит к дому твоего друга и ложит в его ящик твоё письмо (функция записывает значение в переменную, зная указатель на эту переменную). Далее твой друг читает твоё письмо (после выполнения функции ты по прежнему используешь саму переменную, а не указатель на неё, но теперь в ней уже есть значение, так как функция записала в неё определённое значение).
Постарался объяснить как можно понятнее, но лучше ещё что-нибудь про указатели почитать/посмотреть.
Отредактировал BoPoH - Четверг, 21.11.13, 23:31

Drs36
Проверенные
21.11.13 23:29
Offline
А как сделать чтобы с начала была доступна автошкола ?

Slivkin-Sergey
Модераторы
23.11.13 21:44
Offline
Код
Text.ShowStyled('RACE5', 500, 4) // ~s~СТАРТ!
wait 500
create_thread @SHRANGE_TARMOV
7@ = 10000
03C3: set_timer_to 7@ type 1 GXT 'TIMER'
18@ = 0

:STEVEN3_1TARGET_CYCLE
wait 0
if
0366: object $SHRANGE_TARGET_BARREL[0] damaged
then
0723: break_object $SHRANGE_TARGET_BARREL[0] intensity 1
014F: stop_timer 7@
jump @STEVEN3_2TARGET_INIT
end
if
not 7@ == 0
jf @STEVEN3_1TARGET_INIT
jump @STEVEN3_1TARGET_CYCLE

Почему-то в процессе выполнения одной из этих команд (не пойму какой) игра просто "выходит из себя" happy , тобишь происходить вылет. Интересно, из-за чего?..

BoPoH
Друзья
23.11.13 22:17
Offline
Цитата Slivkin-Sergey ()
03C3: set_timer_to 7@ type 1 GXT 'TIMER'

Насколько я знаю, здесь можно использовать только глобальную переменную (там, где 7@).
И, вообще, это всё в майне?

Slivkin-Sergey
Модераторы
24.11.13 20:21
Offline
Ага, дело было в 0723:...

Ещё один занятный вопросик: как заставить двигаться несколько объектов одновременно, не create'я thread'ов?

Добавлено (24.11.13, 19:21)
---------------------------------------------

Цитата BoPoH ()
И, вообще, это всё в майне?

А что?

Drs36
Проверенные
24.11.13 20:27
Offline
А с моим вопросом как

BoPoH
Друзья
25.11.13 17:28
Offline
Цитата Slivkin-Sergey ()
как заставить двигаться несколько объектов одновременно, не create'я thread'ов?

Цикл, в котором ты обрабатываешь движение нескольких объектов.

Цитата Slivkin-Sergey ()
А что?

Клео не поддерживает create_thread

Форум » Игры серии GTA » GTA San Andreas » Вопросы по скриптингу Sanny Builder и заказы (Вы можете получить ответы на вопросы по SB и сделать заказ)
Страница 83 из 126«128182838485125126»
Поиск: