|
Jordan 63
Пользователь
Откуда: Россия, Самара Регистрация: Июль 2007
Всего: 228 сообщений
|
Я тут сделал скрипт сундука в который можно добавлять предметы и изменять их без перекомпиляции скрипта. Но это не совсем скрипт сундука я взял скрипт удалил импортную переменную и условия при котором создаются предметы что бы было проще тестировать загрузите скрипт и обворуйте клинта там должны появиться предметы. Лежит здесь. http://jordan631.narod.ru/data.rar Установка распакуйте архив в папку игры Пока в скрипте прописано 7 предметов но можно сколько угодно чтобы добавить или изменить предмет смотрите acklint.msg там все закоментировано в папке scripts лежат исходники скрипта. Так же в файле acklint.msg необязательно писать по английски можно и по русски но нужно изменить вот это PID_LEATHER_ARMOR на это кожаная броня в двух местах так и с отстальными предметами А теперь вопрос как сделать так чтобы скрипт считывал не так # Название предмета {100}{}{PID_LEATHER_ARMOR} # Минимальное количество предметов {101}{}{1} # Максимальное количество предметов {102}{}{2} # Вероятность появления предмета в процентах {103}{}{100} Т.е с каждой строки А вот так с одной строки {100}{}{PID_LEATHER_ARMOR|1|2|100} или так {100}{}{PID_LEATHER_ARMOR,1,2,100}
|
Отправлено: 14:12 - 14 Янв., 2008 | ИСПРАВЛЕНО: Jordan 63 - 18:50 - 15 Янв., 2008
|
|
|
Jordan 63
Пользователь
Откуда: Россия, Самара Регистрация: Июль 2007
Всего: 228 сообщений
|
Как в процедуру atoi procedure atoim(variable ostr, variable bstr) begin variable begin i; str; val; end str:=bstr; while (ostr!=str and ostr<=str+":" and ostr>=str+"0" do begin while not((ostr>str+i and ostr<str+(i+1)) or ostr==str+i) and i<9 do i+=1; str+=i; val:=val*10+i; i:=0; end return val; end #define atoi(x) atoim(x,"" Вставить проверку (atoi(message_str(SCRIPT_GLOBAL_VARS, 100))); если строчка 100 в скрипте с номером 567 пустая тогда читать строчку 100 в скрипте с номером 345 если и это пустая тогда читать строчку 100 в скрипте с номером 961
|
Отправлено: 12:09 - 4 Фев., 2008 | ИСПРАВЛЕНО: Jordan 63 - 12:11 - 4 Фев., 2008
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Это надо делать не в atoi, а с помощью atoi.
|
Отправлено: 17:15 - 4 Фев., 2008
|
|
Jordan 63
Пользователь
Откуда: Россия, Самара Регистрация: Июль 2007
Всего: 228 сообщений
|
Wasteland Ghost
Цитата: Это надо делать не в atoi, а с помощью atoi.
Как это можно сделать? Если не трудно покажи пример.
|
Отправлено: 2:48 - 5 Фев., 2008
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Я не знаю, что конкретно ты имел ввиду, говоря "пустая", поэтому... if not(message_str(567, 100) == "Error" or message_str(567, 100) == "") then begin // если строка есть и она не пустая val := atoi(message_str(567, 100)); end else if not(message_str(345, 100) == "Error" or message_str(345, 100) == "") then begin val := atoi(message_str(345, 100)); end else if not(message_str(961, 100) == "Error" or message_str(961, 100) == "") then begin val := atoi(message_str(961, 100)); end Примитивно, но должно работать. :) Ray, больше так не делай.
|
Отправлено: 11:04 - 5 Фев., 2008
|
|
Jordan 63
Пользователь
Откуда: Россия, Самара Регистрация: Июль 2007
Всего: 228 сообщений
|
Wasteland Ghost А как в саму atoi вставить эту же проверку. Пример я пишу set_global_var(atoi(message_str(961, 100), 1); И что бы atoi в самой процедуре сама смотрела все мсг на этой строке но не именно на 100 а любую какая будет Я просто хотел сделать так будет один мсг где прописаны гвары (самый главны) а также будут несколько пустых мсг где можно вписывать номера гвар т.е что бы не записывать их в главный файл а в другой и atoi должна посмотреть все мсг и если эти мсг на таких то строках пустые значит читать главный файл.
|
Отправлено: 11:22 - 5 Фев., 2008
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Нельзя такие сугубо конкретные вещи загонять в базовую процедуру! Это как минимум некрасиво, а как максимум чревато несовместимостью, узостью и глюкавостью. Лучше напиши свой макрос. Например #define get_gvar_from_msg(x) if not(message_str(567, x) == "Error" or message_str(567, x) == "") then begin \ val := atoi(message_str(567, x)); \ end \ else if not(message_str(345, x) == "Error" or message_str(345, x) == "") then begin \ val := atoi(message_str(345, x)); \ end \ else if not(message_str(961, x) == "Error" or message_str(961, x) == "") then begin \ val := atoi(message_str(961, x)); \ end
|
Отправлено: 0:18 - 6 Фев., 2008
|
|
Ray
Модератор
Откуда: Донецк,Украина Регистрация: Янв. 2004
Всего: 746 сообщений
|
Wasteland Ghost За смайлики прошу прощения, а тэг code - издевательство над пользователями
----- Не бывает невозможных задач – бывает мало времени.
|
Отправлено: 20:14 - 6 Фев., 2008
|
|
Wasteland Ghost
Маленькое Злое Привидение
Откуда: Россия, Самара Регистрация: Дек. 2002
Всего: 2251 сообщение
|
Убрала тэг. Нет, определённо, люблю я свою Мозиллу-тормозиллу. Скольких оперно-иешных глюков не вижу...
|
Отправлено: 21:21 - 6 Фев., 2008
|
|
|
|